繁体   English   中英

是否可以将其添加到此switch语句中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM