对于这个愚蠢的问题道歉,我是一个初学者,并且无法理解为什么以下代码无法正常工作。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int j = ' ';
int check = 0;
printf("\nPlease enter A, B, or C\n");
j = getch();
while(check == 0)
{
if(j != 'A' || 'B' || 'C')
{
printf("\nInvalid entry, please enter either an A, B, or C\n");
j = getch();
}
else
{
check = 1;
}
}
}
我希望这个简单的程序可以使用getch()
接受A,B或C(是的,我需要使用getch()
)并使用我的while
循环来确认条目实际上是A,B或C.但是,我运行程序,即使我输入A,B或C,程序也会告诉我输入无效。有人可以帮助我,告诉我我做错了吗?
我有一种感觉,这与它将字符作为ASCII整数读入这一事实有关,但我真的不确定如何解决这个问题。
答案 0 :(得分:4)
if(j != 'A' || 'B' || 'C')
相当于
if(j != 'A' || 'B' != 0 || 'C' != 0)
'B'
和'C'
都具有非零值,因此条件将始终评估为真。
我想您要检查j
是否不是列出的任何值。如果是这样,该行应
if(j != 'A' && j != 'B' && j != 'C')
答案 1 :(得分:0)
执行以下替换:
int j = ' '; /* to */ char j = ' ';
if(j != 'A' || 'B' || 'C') /* to */ if(j != 'A' && j != 'B' && j != 'C')
j = getch(); /* to */ j=getchar();
此外,要使getchar()正常工作,请根据需要添加<conio.h>
。