Пользователь имеет только два варианта: «a» или «b», если пользовательский ввод не является «a» или «b», сообщение об ошибке должно побуждать их вводить только «a» или «a», б.Проверка ввода: проверка нескольких значений
ХОРОШЕЕ: Я ввожу букву «a», и она обходит цикл while.
THE BAD: Когда я вхожу в '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')', что, по-видимому, не то, что вы ожидаете. –
Спасибо, Милли! –