- 154 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:06:54 ]
- >>148
> 解決策としてはscanfの前でflush(stdin);でも使ってバッファをクリアするのが手っ取り早い かならずユーザの入力があるまでブロックしたいのなら、それもいいかもしれないが、 先行入力を許したい場合や、ファイルからのリダイレクトを許したい場合に困るよ。 人間がAを押下した後にエンターを押させる というのが意図した仕様であれば、 人間の入力の単位は1文字ではなく行である ということなわけだよね。 ということは、それを受け取るプログラム側でも、 1文字ずつ読み取るのではなく、1行ずつ読み取る ようにするのが自然だと思う。 自分なら、 char input_buf[10] ; /* この長さが適切なのか・・・ */ do { printf( "input A\n" ); } while((fgets(input_buf, sizeof(input_buf), stdin) != NULL)&&(input_buf[0] != 'A')) ; という感じにする。 エラーの場合も直進するのが、ちょっとアレだが。
|

|