忍者ブログ
http://who7s.blog.shinobi.jp/
×

[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
カレンダー
09 2017/10 11
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
サブカテゴリー

[プログラミング]

アルゴリズム
C
Java
VisualBasic
PHP
HTML/CSS

最新コメント
プロフィール
HN:
Juan
性別:
男性
自己紹介:
社会人1年目。
システムエンジニア見習いとなるべく勉強中。
カスタマイズに特化したブラウザ Sleipnir。上級者のために。
Mozilla Firefox ブラウザ無料ダウンロード
カウンター
バーコード
BlogParts

Copyight© who7s All Rights Reserved.
Designed by who7s.
忍者ブログ [PR]