C - 为什么这个循环会重复,即使使用 getchar() 给出了正确的输入来打破它?

C - Why does this loop repeat, even when the right input is given to break it, using getchar()?

(C 和一般编程的新手。)

当我运行这个小程序提示用户输入1或2时,我想检查输入是否正确,所以我运行一个本应运行 直到给出正确的输入。但即使我键入 1 或 2(无论是从头开始还是在提供无效输入之后),错误消息都会继续打印。

我应该在 while 循环中休息一下吗?如果是这样,是否有更有效/"less code" 检查用户输入的方法?

int main(void) {

char c;

printf("Press '1' or Press '2': ");
c = getchar();
while ((c != '1') || (c != '2')) {
    printf("ERROR: Invalid Input. Please try again: ");
    c = getchar();
}

return 0;
}

提前致谢。

(c != '1') && (c != '2')

这是正确的条件。

还有int cgetchar() returns int.

换句话说,您的情况是 while( c is not '1' OR c is not '2' ) keep looping

对于c='1'c='2',其中一个条件为真。让它一次又一次地循环。

顺便说一句,如果这些成立

,则表达式 (a||b) 将为真
a   b   a||b
--+---+-------
F   F     F
T   F     T
F   T     T
T   T     T         T:True F:False

您需要使用 && 而不是 ||。想一想:如果我输入1,那么(1 != 1)就是false,但是(1 != 2)就是true,那么就是(false || true) == true。使用 && 应该可以解决您的问题。