C 言語 | C 言語入門 | scanf() によるデータ入力
scanf() 関数を使って、キーボードから入力した値を受け取る方法を説明する。
ユーザー入力を受け取る
これまでのプログラムでは、変数に定数を代入してきた。実際のプログラムでは、実行時に動的に変化する値を扱うときに変数が役立つ。
動的に変化する値はどのように受け取るのだろうか。ディスクファイルからデータを読む方法がある。たとえば、テキストファイルを読み込んで画面に表示する場合、その内容は実行時に変化する。ただし、ファイルの読み込みは中級の内容であるため、後で説明する。
より簡単な方法はキーボード入力である。プログラムの用途が広がり、テストもしやすくなる。キーボードから値を入力するには scanf() を使う。scanf() は printf() の入力版にあたり、指定した変数にキーボードからの入力値を保存する。
scanf() 関数
int scanf("フォーマット" , &変数名);
最初の引数にフォーマット文字列を指定し、2 番目以降に入力値を保存する変数を指定する。変換指定子は printf() と似ている。整数には %d、文字には %c を使う。変数名の前には & を付ける。
& が必要なのは、関数に変数のアドレスを渡すためである。詳しくはポインターの記事で説明する。ここでは、scanf() に変数を渡すときは、変数名の前に & を付けると覚えておこう。
scanf() は、正しく変換して代入できた項目数を返す。
コード 1
#include <stdio.h>
int main() {
int iVar = 0;
printf("정수를 입력해 주세요. > ");
scanf("%d" , &iVar);
printf("입력한 수는 %d입니다.\n" , iVar);
return 0;
}
コード 1 を実行すると値の入力を求められる。整数を入力すると iVar に代入され、画面に表示される。正しく変換できない値を入力した場合は代入されない。
実用的なプログラムでは、複雑な入力に scanf() を使うことは少ない。十分なエラー処理が難しいためである。通常は別の標準入力関数で文字列を読み込み、内容を確認して適切な値へ変換する。この本では、入門用の例を簡潔にするために scanf() を使う。