Hatena::ブログ(Diary)

mooz deceives you

(about 'mooz) ; => "See http://mooz.github.com/index-ja.html"

 | 

July 21 (Sat), 2007

標準入力の空読み

getcharやfgets(stdin, ...)などを使うと、標準入力にゴミが残ってしまうことがあります。これは結構分かりにくい所に残るので、なかなか厄介です。例えばgetcharで文字を入力させると標準入力には\nが残るので、その後にgets等を呼び出すと、その\nが読み込まれてしまってうまく動きません。そこで標準入力を使う前に

while(getchar() != '\n') ;//空読み

としてやれば、残ったゴミを掃除することができます。標準入力のゴミはバッファに入りきらなかった尻尾の部分ですので、必ず入力したときの改行、つまり\nが残っているわけです。それを利用したのがこのテクニックです。

トラックバック - http://d.hatena.ne.jp/mooz/20070721/p1
 |