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() を使う。