書式付き入力 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 の場合、受けつけない文字はバッファに残る。 受けつける文字が一つもないときにも、プログラムが正しく動作するためには、 一般に複雑な処理が必要である。

型と書式一覧