【发布时间】:2015-11-28 10:26:00
【问题描述】:
我是 C 编程的初学者,我正在尝试做一些基本的事情。我正在尝试使用这样的switch 语句创建一个简单的菜单:
int disp(){
int check;
while(check!=1){
int choose;
printf("1 \n");
printf("5quit\n");
scanf("%d", &choose);
switch(choose)
{
case 1:func1();
break;
case 5: check = 1;
break;
default:
printf("wrong input");
}
return 0;
}
}
但是,当default 或case 1 发生时,我想让它仍然循环菜单,直到做出正确的输入。例如,如果我输入像“asdf”这样的随机内容,程序应该说“输入错误”,然后再次显示菜单并等待用户输入。如果用户输入“1”,程序将运行func1,然后返回菜单等待用户输入选择。
目前,当输入错误时它只是关闭程序而不是再次显示菜单,我不知道如何解决。
【问题讨论】:
-
第二行
int check;第三行while(check!=1)- 未初始化的变量。至少请注意您的编译器警告。 -
您的
return 0;放错了位置 - 将其移至main()的最后一行。 -
我的编译器没有显示此代码的任何警告/错误。使用代码块
-
是时候启用它们了吗?
-
我刚刚重新格式化了代码以使@PaulR 的评论更加突出。注意你的缩进。如果您遵循常规的缩进模式,您将更容易发现小错误,例如循环内的返回。绝对是visit the compiler options to turn up 编译器的报告。警告允许代码编译和运行,但会标记一些您应该注意的后果。也许你真的想做一些奇怪的事情,这就是为什么它们只是警告,但如果你没有......
标签: c input menu integer switch-statement