ユーザは 'a'または 'b'の2つしか選択肢がありません。ユーザの入力が 'a'または 'b'でなければエラーメッセージは 'a' b '。入力の検証:複数の値をチェック
THE GOOD: 私は文字 'a'を入力し、whileループをバイパスします。
ザ・バッド: 「b」と入力するとwhileループをバイパスしません。
これを修正するための提案はありますか?
#include <stdio.h>
int main(void)
{
char c;
printf("enter a or b to make it out!\n");
//loop if answer is NOT a or b
while ((c = getchar() != 'a') && (c = getchar() != 'b'))
{
//let the user know there has been a problem!
printf("That value is invalid");
printf("\nPlease enter a or b:\n");
fseek(stdin,0,SEEK_END);
}
printf("You made it out!");
return 0;
}
あなたは2つの文字を読んで。あなたは改行文字 '\ n'をつかむことになります。したがって、aをタイプすると、 'c = getchar()!= 'a''はfalseに評価され、ループをスキップします(短絡のために第2の条件もスキップします)。しかし、b、 '' b '!=' a''、 ''\ n'!= 'b''と入力するとwhileループに入ります。また、これは 'c =(getchar()!= 'a')'として実行されていると確信しています。おそらくあなたが期待しているものではありません。 –
ありがとうミリー! –