[英]Can this if be added to this switch statement?
嗨,我正在构建一个酒店管理程序,并且试图使我的switch语句简短一些,但它不起作用。 我试图添加一个内部带有break的函数,但出现一条错误消息,说break不在循环或switch语句内:
void goback()
{
char y;
printf("Would you like to go back?(Y/N)");
scanf("%c",&y);
if (y=='Y' || y=='y')
{
break;
}
}
int main(){
do
{
printf (" 1. Add a Room\n 2. Current rooms\n 3. Add a booking\n 4. Current bookings \n 5. Modify a booking\n 6. Print bill\n 7. Exit\n\n");
printf ("Which section would you like to access:");
scanf ("%d",&w);
switch (w){
case 1:
clrscr();
newroom();
goback();
case 2:
clrscr();
roomscan();
goback();
case 3:
clrscr();
addbooking();
goback();
case 4:
clrscr();
currentbooking();
goback();
case 5:
clrscr();
printf("not ready\n");
case 6:
clrscr();
printf("not ready\n");
case 7:
clrscr();
printf("\t\t\t\tLogging out... See you next time!");
exit (1);
break;
default:
printf("try again");
}
}
while (w!=7);
}
当然,您会因为break;
出错break;
语句使您脱离goback()
函数而不是case
。
如您所知,每个case
块必须以break;
结尾break;
。
就您而言,您必须break;
在每个case
块的末尾声明,您可以使goback()
函数返回一个布尔值来确定是否返回,但是您必须定义如果用户不想返回时该怎么做。
我不确定,但是如果要分开执行而不是按顺序执行,则可能需要在语句后添加中断。 在这里,我只看到您的案例7包含一个中断,这意味着直到执行一个案例为止的所有案例,如果那是您希望的没问题,否则可以尝试这样的操作
switch (w){
case 1:
clrscr();
newroom();
goback();
break;
case 2:
clrscr();
roomscan();
goback();
break;
case 3:
...
在这里,您的goback()函数似乎试图执行该中断操作,但是它的作用是尝试从被调用的上下文中中断,这里是一个“ if”块,它内部无法中断。 我猜这就是编译器在说的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.