Switch语句不执行案例(c)
我做了一个switch语句,但是,它只适用于已经设置的常量。如果我尝试将其与用户输入一起使用,则只有一个案例有效,其他所有案例都无效。现在不管我输入什么,它总是使用默认的大小写。我尝试添加另一个getchar()以清除缓冲区中的Switch语句不执行案例(c),c,char,switch-statement,getchar,C,Char,Switch Statement,Getchar,我做了一个switch语句,但是,它只适用于已经设置的常量。如果我尝试将其与用户输入一起使用,则只有一个案例有效,其他所有案例都无效。现在不管我输入什么,它总是使用默认的大小写。我尝试添加另一个getchar()以清除缓冲区中的\n字符,但这没有任何区别。我将在此处发布整个switch语句: char option=' '; option=getchar(); switch(option){ //Parallel resistance cal
\n
字符,但这没有任何区别。我将在此处发布整个switch语句:
char option=' ';
option=getchar();
switch(option){
//Parallel resistance calculations
case 'p':
CLEAR
//PResistance();
printf("RESISTANCE");
getchar();
break;
//Ohm's Law calculations
case 'o':
CLEAR
printf("OHM");
//Ohm();
break;
//Exits program
case 'q':
printf("Good bye! Stay safe in the laboratory! :)\nPress any key to exit");
getchar();
exit(0);
break;
//Error checking
default :
printf("Invalid input, Try again");
break;
}
}
while (option!='q');
我注释掉了这些函数,这样我就可以使用print语句来测试它是否工作 无论何时从C中的
stdin
输入字符
或字符串
,始终确保输入缓冲区中没有\n
。要执行此操作,请始终在获取integer
或float
输入后执行getchar()
在您的情况下,可能在输入
字符之前输入了整数
。因此,在接受字符
输入之前,尝试编写一个getchar()
。只有当选项是char变量时,开关才会匹配。如果它是int,就会有问题。您可以将选项更改为char,也可以使用开关(option&0xFF){
选项是char变量。如果选项
是一个int
getchar()
返回int
,并且'p'
,'q'
等都是int,那么它仍然会匹配。@OP:将默认值更改为printf(“无效输入%d,请重试”,选项);
。然后您将能够准确地看到发生了什么。谢谢。在每次输入后添加getchar()可以解决此问题。