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 c
; getchar()
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
。使用 &&
应该可以解决您的问题。
(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 c
; getchar()
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
。使用 &&
应该可以解决您的问题。