scanf関数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nil
記事: 428
登録日時: 8年前

scanf関数について

#1

投稿記事 by nil » 8年前

現在作成中のプログラムについてなのですが、
半角アルファベットの小文字をscanf関数を使って入力し、
入力された文字列が上の条件に当てはまらない場合(数字、大文字などが使用されたとき)

入力 → エラーなら一度"error"と表示し、再度入力

という処理を実装したく、
下記のようなコードを作成しました。

コード:

#include <stdio.h>
int main(){
	char Input[16];
	while(1){
		if(scanf("%[a-z]", Input) != 1){
			printf("error\n");
		}else{
			break;
		}
	}
}
ですが、このコードを実行した場合、
数字や大文字を入力した際に

コード:

error
error
error
............
というように延々とエラーメッセージが表示され続けます。
何故無限ループ(?)が起こってしまうのでしょうか?
また、どのように回避したらいいのでしょうか?

ご教示お願いします。

アバター
パコネコ
記事: 139
登録日時: 9年前
住所: 大阪

Re: scanf関数について

#2

投稿記事 by パコネコ » 8年前

その使い方を私は知らなかったのでさっき調べた程度の知識しかありませんが、おそらく、入力ストリームに保持され続けているのではないのかと思います。
ここにちょうどいいのが乗っていたので参考になるのではないかと思います。
http://wisdom.sakura.ne.jp/programming/c/c58.html
ニャン!!\(゜ロ\)(/ロ゜)/

nil
記事: 428
登録日時: 8年前

Re: scanf関数について

#3

投稿記事 by nil » 8年前

ご回答ありがとうございました。

どうにか自分で調べてみようと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る