【发布时间】:2014-03-25 02:33:02
【问题描述】:
我做了一个 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');
我注释掉了这些函数,所以我可以使用打印语句来测试它是否工作。
【问题讨论】:
-
仅当 option 是 char 变量时,该开关才会匹配。如果是int就会有问题。您可以将选项更改为 char,也可以使用
switch(option & 0xFF){ -
option 是一个 char 变量。
-
如果
option是int,它仍然会匹配。getchar()无论如何都会返回int,而'p'、'q'等都是整数。 -
@OP:将默认值更改为
printf("Invalid input %d, try again", option);。然后您将能够确切地看到发生了什么。
标签: c char switch-statement getchar