書式付き入力 scanf 文
◎書式付き入力(formatted input) 〜 scanf文 〜
scanf 「書式が受けつける文字」を読んで変換して代入する。
・使用例:次の変数宣言があるとする
int i;
float f;
double d;
char c;
char a[100];
scanf("%d",&i); 入力文字を 10進数として int に変換し、変数i に代入。
scanf("%x",&i); 入力文字を 16進数として int に変換し、i に代入。
scanf("%f",&f); 入力文字を 10進数(実数)として float に変換し、f に代入。
scanf("%lf",&d);入力文字を 10進数(実数)として double に変換し、d に代入。
scanf("%c",&c); 入力文字のコードを char に変換し、c に代入。(事実上変換しない)
scanf("%i",&i); 入力文字を0で始まれば 8進整数、0x で始まれば16進整数、
それ以外は10進数として int に変換し、i に代入。
scanf("%99s",a); aという文字配列にキーボードから空白や改行で区切られた文字列を最大99文字入力。
( scanf("%s",a); 最大数を指定していないので、セキュリティ上問題がある )
scanf(" "); 空白文字を読み飛ばす。" "が"\n"や"\t"でも同じ
(***空白文字以外の文字が入力されるまで終らない***)
空白文字は、スペースの他タブ、改行なども含む。
・書式以外の文字は「必ずそのとおり入力されなければ」ならない。
・「&」は、変数i、f、dの存在するメモリ内の場所(アドレス)を表す = ポインタ
バッファリング:一般に入力は標準入力から1行読んでバッファ(配列)に入れる。
・scanfを利用する場合の注意点
scanf の場合、受けつけない文字はバッファに残る。
受けつける文字が一つもないときにも、プログラムが正しく動作するためには、
一般に複雑な処理が必要である。
型と書式一覧