scanf関数
2-1では画面に文字を表示するプログラムを作成しましたが今度はキーボードから文字を入力するプログラムを作ります。キーボードから文字を入力するにはscanf(スキャンエフ)という関数を使います。scanfを使う時はprintfと同じように変換指定子を使って引数を指定します。例えば10進数の整数を入力する時は%dを使います。
実行結果
scanfを使うときの変換指定子はprintfの時と同じです。
プログラムを見るとscanfの第2引数で、変数名の前に記号&がついています。実は、scanfをつかって入力するときだけ特別に&をつけないといけません。&の具体的な意味は第9章で解説します。
scanf関数の脆弱性
scanf関数で数値を入力してもらうために、%dを使用しますが、このときにユーザーが間違って文字列や全角の数字(C言語では全角の数字やアルファベットは半角文字とは別の文字として認識されます)とします。このときのscanf関数の動作は未定義です。つまり、入力間違えをするとプログラムがバグり、異常終了する可能性もあります。また、入力が終わったあとのエンターキーの入力も文字として受け取ってしまいます。
そのため、実用上ではscanf関数はバグの温床となるのであまり使われません。
まとめ
scanf関数を使用すると、数値や文字をキーボードからの入力として受け取ることができる。
引数の変換指定子はprintf関数と同じ。第2引数以降は変数名の前に&を付ける必要がある。
コメント