scanfとgetcharの主な違いは、getcharがキーボードから1文字を読み取るのに対し、scanfはキーボードからの入力をフォーマットして読み取るという点です。
C言語とは、ベル研究所のデニス・リッチーによって開発された高水準汎用プログラミング言語です。
他の多くのプログラミング言語の基礎となるプログラミング言語です。
C言語には、複数のヘッダーファイルが含まれています。
そのうちの1つが
このヘッダーファイルは、標準入力と標準出力の操作を行うための関数を提供している。
プログラマはこれらの関数を自分のプログラムで使用することができる。
そのうちの2つがscanfとgetcharです。
scanfとは
scanf関数は、キーボードからの入力を読み取り、与えられた書式指定子に従って保存するのに役立ちます。
空白、改行、EOFを読み取るまで入力データを読み込みます。
以下のプログラムを参照してください。
図1: scanfを用いたC言語プログラム
上のプログラムでは、mark1 と mark2 は2つの整数型変数です。
printfコマンドは、マークを入力するようにユーザに通知します。
scanfはキーボードからの入力を読み取るための関数です。
キーボードからの入力は整数値なので、書式指定子は %d となる。
入力値がcharの場合、書式指定子は%cとなる。
また、入力値が文字列の場合、書式指定子は%sです。
受信した入力値は,変数 mark1 と mark2 に格納される。
したがって、プログラマは、7行目のように、これらの変数のアドレスをscanf関数に送る必要がある。
最後に、printf文はこれらの値をコンソールに表示する。
getcharとは
getchar関数は、標準入力から文字を読み込むのに役立ちます。
それは、エンターキーを押すまで待ちます。
そして、ユーザはその読みをコンソールで見ることができます。
この関数は標準入力に対してのみ動作するので、引数は必要ありません。
以下のプログラムを参照してください。
上のプログラムでは、printf関数で文字の終了を通知しています。
getchar関数は、値を入力することができます。
ユーザが文字を入力すると、その文字がコンソールに表示され、ユーザがEnterキーを押すまで待ちます。
そして、printf関数はその文字をコンソールに表示します。
図3: getcharを用いた別のC言語プログラム
上のプログラムの出力を見ると、ユーザは4文字を入力していますが、getcharは1文字だけ読み取り、それを変数 “ch “に格納しています。
最後に、printf関数がその値をコンソールに表示します。
scanf と getchar の違い
定義
scanf は標準入力から空白、改行、EOF に出会うまで入力を読み取る C 関数であるのに対し、 getchar はキーボードである標準入力ストリーム (stdin) からだけ文字を読み取る C 関数です。
これがscanfとgetcharの主な違いです。
パラメータ
さらに、scanf 関数がフォーマット文字列と変数とそのアドレスをパラメー タとして受け取るのに対して、getchar 関数は何もパラメータを受け取りませ ん。
ここもscanfとgetcharの違いです。
機能性
さらに、それぞれがどのように機能するかが、scanf と getchar の重要な違いです。
scanfはフォーマット指定子に従ってデータを読み込みます。
これは、ユーザーがキーボードを通して送信するデータ型を記述しています。
しかし、getcharはキーボードから1文字を読み取ります。
結論
簡単に説明すると、scanf と getchar は C 言語で利用可能な 2 つの関数です。
scanfとgetcharの主な違いは、getcharがキーボードから1文字を読み込むのに対し、scanfはキーボードからの入力をフォーマットして読み込むという点です。