切换声明不执行案例(c)

时间:2014-03-25 02:33:03

标签: c char switch-statement getchar

我做了一个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语句来测试它是否正常工作。

1 个答案:

答案 0 :(得分:1)

每当您在C中从character输入stringstdin时,请务必确保输入缓冲区中没有\n。要执行此操作,请在执行getchar()integer输入后始终float

在您的情况下,也许您在输入integer之前输入了character。因此,在尝试getchar()输入之前,请尝试编写character