这是强调我遇到的问题的最小形式的代码。 代码在“退出”时失败(案例“0”)——程序简单地崩溃了。我怀疑它与 while 循环有关。 无论我为退出案例选择什么字符(而不是“0”),都会出现此问题。
#include <stdio.h>
void main()
{
int run=1;
char menu_option;
while (run==1)
{
printf("Choose case:\n");
scanf ("%s", &menu_option);
switch (menu_option) {
case '1':
printf("1");
break;
case '2':
printf("2");
break;
case '0':
run=0;
break;
default:
printf("Wrong input, try again\n");
}
}
}
最佳答案
menu_option
不是字符串,因此 %s
是错误的格式说明符。您需要 %c
,以空格为前缀以防止将空格(包括换行符)解释为有效字符输入。
scanf (" %c", &menu_option);
关于代码在 '0' 情况下失败 - 我不明白为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50202868/