我知道有许多类似于这个的线程,但是,这些线程并没有真正帮助我。我是C的新手,所以我可能只是犯了一个愚蠢的错误,但我不知道自己做错了什么。
我正在尝试创建一个这样的主菜单:
Main menu:
1. Play
2. Reset
3. Display
当用户按1时,我希望它打印游戏,当按下2时,我希望它打印重置,等等。
但是,使用我的代码,当用户按下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;
}
所以我知道我可能犯了一个愚蠢的错误,但我无法弄清楚我做错了什么。我也查看过其他帖子,没有人帮助过我。
答案 0 :(得分:2)
我认为你正在寻找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;
}