Switch语句不执行案例(c)

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

我做了一个switch语句,但是,它只适用于已经设置的常量。如果我尝试将其与用户输入一起使用,则只有一个案例有效,其他所有案例都无效。现在不管我输入什么,它总是使用默认的大小写。我尝试添加另一个getchar()以清除缓冲区中的
\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()可以解决此问题。