C言語 入出力バッファのフラッシュ - stdio.h - [ fflush ]
2008.10.05 Sunday | by LRESULT
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]をクリア )は正式には定義されておらず、 コンパイラ依存です。 |