制作循环菜单时不受欢迎的行为

时间:2018-03-19 05:12:03

标签: c recursion switch-statement do-while

正如标题所示,我尝试过两种方式制作一种交互式菜单:一种是循环,另一种是递归函数。无论哪种方式都会产生相同的行为,也就是说,它“将”我的第一个输入“视为”在调用时应该询问的时间。

为了更好地解释它,这是代码:

#include <stdio.h>

void goback(int *flag)
{
    char selector;

    printf("Do you want to return to menu?\n1. Yes\n2. No\n");
    selector=getchar();
    printf("\n");

    switch(selector)
    {
        case '1':
            break;
        case '2':
            *flag=1;
            break;
        default:
            printf("Invalid input!\n\n");
            goback(flag);
    }

}
int main()
{
    char select;
    int flag=0;

    do
    {
        printf("Main menu\n\n");
        printf("1. A\n2. Exit\n\n");
        scanf("%c", &select);
        switch(select)
        {
            case '1':
            //execute code here and ask the user if they want to go back
            //to the main menu
                goback(&flag);
                break;
            case '2':
                break;
            default:
                printf("Invalid input option!\n\n");
        }
    }while(select!='2' && flag==0);

    return 0;
}

如果用户输入无效选项,那么 这两个函数中的任何一个都会将输出的消息作为输出,然后再进行第二次迭代;当它被称为函数时,它为什么需要先前的输入?

0 个答案:

没有答案