C言語 入出力バッファのフラッシュ - stdio.h - [ fflush ]

2008.10.05 Sunday | by LRESULT


出力バッファのフラッシュには、fflush()を使用します。

このフラッシュとは、バッファに溜まっているデータを吐き出すという意味です。
 一般的には、入力バッファ(stdin)のフラッシュも出来るようですが、
   厳密な定義としては、未定義らしいので環境毎に試してみる必要があります。


fflush
書式 int fflush( FILE *fp )
機能 入出力バッファのフラッシュを行う
引数 FILE *fp : ファイル(ストリーム)ポインタ
戻り値 成功すると、0を返し、
失敗すると、EOF(-1)を返します。





サンプルコード
scanf()を2回続けて使用すると失敗してしまう為、
fflush()で入力バッファ ( stdin ) をクリアしてみます。
#include <stdio.h>

int main(void)
{
  char c;

  scanf( "%c", &c );
  printf( "1文字目は %c¥n", c );

  fflush( stdin );

  scanf( "%c", &c );
  printf( "2文字目は %c¥n", c );

  return 0;
}



結果
1文字目は a
2文字目は b
という感じで、ちゃんと入力する事が出来ます。
試しに、fflush()を消すと上手く入力できないはずです。

なぜ、入力出来ないかというと、
1文字目の入力で改行文字が入力バッファに残ってしまい、
2文字目の入力に入ってきてしまうからです。

ただ、この使い方( 入力バッファ[stdin]をクリア )は正式には定義されておらず、
コンパイラ依存です。

カテゴリ:C言語 stdio.h | 21:54 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/64

トラックバック