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

标签 c switch-statement getchar

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

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

Main menu:

1. Play
2. Reset
3. Display

当用户按下 1 时,我希望它打印 play game,当按下 2 时,我希望它打印 Reset,等等。
但是,使用我的代码,当用户按下 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;
}

所以我知道我可能犯了一个愚蠢的错误,但我就是想不通我做错了什么。我还查看了其他线程,但没有一个对我有帮助。

最佳答案

我认为您正在寻找 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;
}

关于C: 使用 getchar 和 switch case 获取主菜单的用户输入的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374573/

相关文章:

c - 当 getchar 还没有收到换行符时是否有办法打印

使用 getchar() 方法计算输入中的字符数

c - 三个传感器,带 2 个 RGB LED Arduino

c - 如何在 C 中递归地反转整数 vector (数组)?

javascript - 如何将 case 语句放入 javascript 循环中

javascript - JS 开关盒不工作

c - setvbuf 无法使标准输入无缓冲

c++ - C/C++/Haskell AMQP 服务器库

c - 如何裁剪加载 SOIL 的图像

JavaScript switch 语句 1-100