C:使用getchar和switch case来获取主菜单的用户输入的问题

时间:2014-08-19 01:56:30

标签: c switch-statement getchar

我知道有许多类似于这个的线程,但是,这些线程并没有真正帮助我。我是C的新手,所以我可能只是犯了一个愚蠢的错误,但我不知道自己做错了什么。

我正在尝试创建一个这样的主菜单:

Main menu:

1. Play
2. Reset
3. Display

当用户按1时,我希望它打印游戏,当按下2时,我希望它打印重置,等等。
但是,使用我的代码,当用户按下1时,它会打印"玩游戏",当用户按下2或3时,它不会打印任何内容。

int main(){

    int input;

    /*Displays the menu to user*/

    printf("Main menu\n");
    printf("1.Play\n");
    printf("2.Reset\n");
    printf("3.Display\n");   
    printf("please enter something:\n");

    input=getchar();

    switch(input){
    case'1':
        printf("play game\n");
        break;
    case'2':
        printf("reset\n");
        break;
    case'3':
        printf("Display\n");   
        break;
    default:
        printf("invalid\n");
        break;
    }

    {
        getchar();
        while(input != '3');
    }
    return EXIT_SUCCESS;
}

所以我知道我可能犯了一个愚蠢的错误,但我无法弄清楚我做错了什么。我也查看过其他帖子,没有人帮助过我。

1 个答案:

答案 0 :(得分:2)

我认为你正在寻找do-while循环。您希望将switch嵌套在此do-while中以重复执行它。

另请注意额外的getchar()调用,以消费在该号码后输入的Enter

#include <stdio.h>
#include <stdlib.h>

int main(){

    int input;

    /*Displays the menu to user*/

    printf("Main menu\n");
    printf("1.Play\n");
    printf("2.Reset\n");
    printf("3.Display\n");   
    printf("please enter something:\n");


    do{
        input=getchar();
        getchar();
        switch(input){
            case'1':
                printf("play game\n");
                break;
            case'2':
                printf("reset\n");
                break;
            case'3':
                printf("Display\n");   
                break;
            default:
                printf("invalid\n");
                break;
        }

    } while(input != '3');
    return EXIT_SUCCESS;
}