• ベストアンサー

C言語 While文(ループ)内の文字入力

encyの回答

  • ency
  • ベストアンサー率39% (93/238)
回答No.5

入力ストリームに改行文字が残っていることが原因なのは、すでに何名かの方が回答されているとおりです。 scanf() は、空白文字、改行文字、タブ文字といった文字の食べ残してしまうんです。 scanf() の代わりに fgets() + sscanf() なんかを使うのがポピュラーだと思いますが、食べ残しを避けるだけなら、こんな方法もありますよ。 修正前: scanf( "%c", &a ); 修正後: scanf( "%c%*c", a ); "%*c" の部分が、普段は食べ残す改行文字をうまく吸い上げてくれます。 # …とつい最近も同じようなことを書いた記憶があるなぁ。 # http://oshiete1.goo.ne.jp/kotaeru.php3?q=1807169 あたりで。。。

gh8050ke600
質問者

お礼

回答有難う御座います。参考にさせていただこうと思います。