文法
#include <cstdio> int scanf( const char *フォーマット, ... );
scanf()関数は、標準入力読み込んで、渡されたフォーマット西多賀って、他の引数として渡された変数にデータを保存します。入出力は逆ですが、printf()と非常に良く似ています。
フォーマット文字列は、下記のような制御文字、ホワイトスペース文字、ホワイトスペース以外の文字で構成されます。制御文字は%記号で始まります。以下のような種類があります:
| 制御文字 | 説明 |
|---|---|
| %c | 1文字 |
| %d | 10進数の数値 |
| %i | 数値 |
| %e, %f, %g | 浮動小数点数 |
| %lf | 倍精度の浮動小数点数(double) |
| %o | 8進数 |
| %s | 文字列 |
| %x | 16進数 |
| %p | ポインタ |
| %n | この制御文字に来るまでに標準入力から読み込まれた文字数 |
| %u | 符号なしの数値 |
| %[ ] | カッコ内に含まれる文字の集合 |
| %% | %記号 |
scanf()は、フォーマットで指定された文字にマッチさせながら、入力を読み込んでいきます。制御文字が読み込まれると、次の変数に値が格納されます。ホワイトスペース(タブ、スペースなど)はスキップされます。ホワイトスペース以外の文字は、入力と一致すると捨てられます。もしも%記号と制御文字の間に数値が記入されると、その文字数の文字だけが変数に変換されます。%[ ]制御文字で指定される文字集合が見つかった場合には、ブラケットの中に登場する文字だけが変数に格納されます。scanf()の返り値は読み込みに成功して、値が割り当てられた変数の数です。エラーが発生した場合にはEOFが返されます。
以下の短いコード片はint, float, doubleの変数の値をユーザが標準入力にタイプした情報から読み込みます。scanf()に渡す変数の引数はポインタを渡します。それぞれの変数名の前にアンパサンド(&)を付けます:
int i; float f; double d; printf( "数値を入力してください: " ); scanf( "%d", &i ); printf( "浮動小数点数を入力してください: " ); scanf( "%f", &f ); printf( "倍精度浮動小数点数を入力してください: " ); scanf( "%lf", &d ); printf( "あなたが入力したのは %d, %f, %f です。\n", i, f, d );