Top >
>
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
C言語で、アプリを作成している時、キーボード入力が必要になることがある。
その際、Cの入門書などではscanf()がよく取り上げられるが、実際これを使ったプログラムというのは推奨されていない。
代替として、fgets()で読み取り、sscanf()で解釈させるという方法がある。
しかし、これでもたまにバッファにゴミが残ることがあり、掃除してやる必要があるが、Cでは具体的にストリームバッファをクリアする手段がない。
調べた結果、以下のようなコードで対処することで(完全でないながらも)回避できるようだ。
//一文字入力の場合 int input_key(void){ char buf[BUF_LEN]; int c, t; fgets(buf, 2, stdin); sscanf(buf, "%c", &t); if(strchr(buf, '\n') == NULL){ while((c = getchar()) != '\n' && c != EOF); } return t; }
これで良いかは、まだ不明なため、参考程度に。
PR