ファイルの最後に到達したにもかかわらず、最後の値の入力を取得して再読み込みしているように見える場所に問題がsscanf
あります。fgets
私のコード:
while (won == 0) {
char command, input[MAX_LENGTH];
fgets(input, MAX_LENGTH, stdin);
sscanf(input, " %c\n", &command);
printf('%c\n', command);
check_won();
}
あなたのsscanf
パターンは%c %s
ですが、あなたは を読んでいるだけですcommand
。それは意図的なものですか?の戻り値をチェックして、fgets
実際に入力を読み取っていることを確認し、 の戻り値をsscanf
実際に 2 つの要素を読み取っていることを確認する (そして 2 番目の要素を破棄する) ことを検討する必要があります。入力が正しく解析および収集されておらず、check_won
関数がその入力に依存している場合、配列が再初期化されないため、入力が繰り返されます。
代わりにこのようなことを試してみませんか?
if(fgets(input, MAX_LENGTH, stdin) == NULL) {
break;
}
フォーマット文字列で 2 つの要素を指定しましたが、引数 &command を 1 つしか渡しませんでした。
sscanf(input, " %c %s\n", &command);