用戶只有兩個選擇'a'或'b',如果用戶輸入不是'a'或'b',則錯誤消息應該提示他們只輸入'a'或' b」。輸入驗證:檢查多個值
好: 我輸入字母'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;
}
因爲你叫'getchar'兩次你讀兩個字符。你最終也會抓住換行符'\ n'。所以當你輸入a時,'c = getchar()!='a''的計算結果爲false,並跳過循環(我認爲由於短路跳過了第二個條件)。但是當你輸入b時,''b'!='a''和''\ n'!='b'',所以它進入while循環。另外,我敢肯定這是作爲'c =(getchar()!='a')'執行的,這大概不是你所期望的。 –
謝謝米莉! –