嵌套开关:外部开关在退出内部开关后自动执行第二种情况

时间:2016-10-02 04:51:56

标签: c

我正在尝试为我的RPG-esque程序创建一个菜单,它包括主菜单(外部开关)和Inventory菜单(内部开关),我的问题是当我从内部开关退出时,下一个案例外部开关(dispChar())执行。 这是代码

do{
printf("\n(i)Open Inventory\t(c)View Character\t(p)[Mini-Game]Hit the Chest!\t(z)Exit\n");
mainMenu = getch();
switch (mainMenu)
{
    case 'i':
        OpenInventory(&inv);
        do
        {
        printf("\n(a)Equip Weapon\t(b)Equip Helmet\t(c)Equip Suit\t(d)Equip Gloves\t(e)Equip Boots\t(z)Back\n");
        op2 = getch();
        switch(op2)
        {
            case 'a':
                equipWep(&chara, &inv);
                break;
            case 'b':
                equipHelm(&chara, &inv);
                break;
            case 'c':
                equipSuit(&chara, &inv);
                break;
            case 'd':
                equipGloves(&chara, &inv);
                break;
            case 'e':   
                equipBoots(&chara, &inv);
                break;
        }
        }while(op2 != 'z');
    case 'c':
        dispChar(chara);
        break;
    case 'p':
        if(chara.wep.damage == 0)
        {
            printf("No weapon equiped!");
        }else
        {
            grind(&chara);
            break;
        }


}
}while(mainMenu != 'z');

以下是我的一些功能:

void OpenInventory(inventory inv[size])
{
    dispWep(inv);
    dispHelm(inv);
    dispSuit(inv);
    dispGloves(inv);
    dispBoots(inv);
}

void dispChar(character chara)
{
    printf("\nName:%s\nSex:%c\nWeapon:%s\nHelmet:%s\nSuit:%s\nGloves:%s\nBoots:%s\n",chara.charName, chara.charGen, chara.wep.weaponName,chara.helm,chara.sut,chara.glabs,chara.buts);  
}

如果需要我的其他代码,请告诉我。

1 个答案:

答案 0 :(得分:2)

如果您不希望外部switch语句继续执行其余情况,请在内部break;结束后和下一个switch之前添加case switch外部switch (mainMenu) { case 'i': OpenInventory(&inv); do { printf("\n(a)Equip Weapon\t(b)Equip Helmet\t(c)Equip Suit\t(d)Equip Gloves\t(e)Equip Boots\t(z)Back\n"); op2 = getch(); switch(op2) { ... } } while(op2 != 'z'); // Add this break; case 'c': 声明的Infragistics UltraGrid声明。

Double