如何在switch语句中询问用户输入,这将在c中生成另一个开关,我试过这个,但我的程序崩溃了。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char choise1, choise2;
printf("Starting menu:\n a -> Start\n");
choise1 = getchar();
switch(choise1){
case 'a':
printf("\n a -> New Game\n b -> Load Game");
choise2 = getchar();
switch(choise2){
case 'a':
printf("Start new game.");
break;
case 'b':
printf("Loading game.");
break;
default:
printf("This is a wrong input.");
}
break;
default:
printf("This is a wrong input.");
}
return 0;
}
答案 0 :(得分:3)
我看到这里的问题是由于输入缓冲区的剩余输入。
当您输入 a 并按 ENTER 时,newline
将存储在输入缓冲区中的a
之后,将返回下次拨打getchar()
。
如果要连续调用getchar()
来返回有效输入,则需要清除现有内容的输入缓冲区,然后才能读入下一个输入。检查this answer是否有一些解释清楚的方法。
那就是说,
getchar()
会返回int
,对于某些返回值,例如EOF
,它可能不适合char
。将choise1
和choise2
类型更改为int
。int main()
至少应为int main(void)
,以使托管环境符合标准。