愚者のニュース

IT関連を中心にニュースの紹介をしつつ思ったことを気の向くままにつづっています。

2008-1-26 IT関連

[2ch][プログラマ]ベア速 プログラマーになりたいやつって減ってんの?

この>>1とは何かが分かりあえそうな気がする。

それと同時に、日本の今の状況にやっぱり疑問を覚えるわけで…。

[プログラム][ゲーム]4Gamer.net ― プログラマー必見。あの「シムシティ」のソースコードが公開(シムシティ ソサエティーズ)(from:Twitter)

これはいいですね。あー、本当にプログラムしばらくいじってないなぁ…。

[プログラム][迷信] fflush で入力バッファをクリア | 株式会社きじねこ

それは使ってて思いましたねぇ…。WindowsやらMacやら大多数のUNIX/Linuxやらは普通にクリアできたりするんですが、環境によってはそうじゃない場合がある。これはこの迷津を信じていた身としてはなかなか衝撃的でしたよ。仕様をちゃんと知るって大事なんだな、と思った瞬間です。
じゃあ、どうしたらいいのか?
元記事では

入力バッファをクリアするための移植性がある確実な方法は、規格では定義されていません。また、setbuf 関数や setvbuf で入力ストリームをバッファリング無しに指定したとしても、既に入力されてしまったデータを取り消すことはできません。

結局のところ、移植性を保ちながら確実に入力バッファをクリアするには、必要なだけ空読みするしかなさそうです。

と言われてます。入力バッファをクリアしてくれるような関数がC99の時に増えてもよかったんじゃないかなぁ…と、無い物をねだってもしょうがないので代わりの方法を探してみた。

ANSI-C 標準関数によるコンソール入力(体験談)

scanfの危険性とかそういう事が書いてあるページなんですが、後ろの方で「stdin クリアの手法」が書かれています。
でもって紹介されてる関数がこちら
ANSI-C によるコンソールからの入力手法(我流)
文字や数値の読み込み関数を作って公開されています。クリアだけしたいって言う人は自分で読み解いてみてください。そんなに難しくは無いと思うので。
しかし、元記事のサイト面白そうだなー。