我知道有很多线程与此类似,但是,这些线程并没有真正帮助我。我是 C 的新手,所以我可能只是犯了一个愚蠢的错误,但我不知道自己做错了什么。
我正在尝试创建这样的主菜单:
Main menu:
1. Play
2. Reset
3. Display
当用户按下 1 时,我希望它打印 play game,当按下 2 时,我希望它打印 Reset,等等。
但是,使用我的代码,当用户按下 1 时,它会打印“玩游戏”,而当用户按下 2 或 3 时,它不会打印任何内容。
int main(){
int input;
/*Displays the menu to user*/
printf("Main menu\n");
printf("1.Play\n");
printf("2.Reset\n");
printf("3.Display\n");
printf("please enter something:\n");
input=getchar();
switch(input){
case'1':
printf("play game\n");
break;
case'2':
printf("reset\n");
break;
case'3':
printf("Display\n");
break;
default:
printf("invalid\n");
break;
}
{
getchar();
while(input != '3');
}
return EXIT_SUCCESS;
}
所以我知道我可能犯了一个愚蠢的错误,但我就是想不通我做错了什么。我还查看了其他线程,但没有一个对我有帮助。
最佳答案
我认为您正在寻找 do-while
循环。您想将 switch
嵌套在此 do-while
中以重复执行它。
另外,请注意额外的 getchar()
调用以消耗在数字后键入的 Enter
。
#include <stdio.h>
#include <stdlib.h>
int main(){
int input;
/*Displays the menu to user*/
printf("Main menu\n");
printf("1.Play\n");
printf("2.Reset\n");
printf("3.Display\n");
printf("please enter something:\n");
do{
input=getchar();
getchar();
switch(input){
case'1':
printf("play game\n");
break;
case'2':
printf("reset\n");
break;
case'3':
printf("Display\n");
break;
default:
printf("invalid\n");
break;
}
} while(input != '3');
return EXIT_SUCCESS;
}
关于C: 使用 getchar 和 switch case 获取主菜单的用户输入的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374573/