[英]Switch Statement Not Executing Cases (c)
我做了一个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
输入character
或string
,请始终确保输入缓冲区中没有\\n
。 为此,请始终在获取integer
或float
输入之后使用getchar()
。
在您的情况下,也许您在输入character
之前已经输入了integer
。 因此,尝试在输入character
之前编写一个getchar()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.