我在C中用这个菜单做错了什么

use*_*467 0 c

我是C的新人,我正在尝试创建我的第一个菜单!但只要用户输入1并输入默认选项,就会出现并重新加载菜单.虽然当4命中和输入时,也会出现默认选项,但菜单已成功退出.

void begin_menu(void)
{
    int choice;

    do
    {
        printf("English Draughts - Main Menu\n\n");
        printf("1. Play Game\n");
        printf("2. Display Winners\n");
        printf("3. Reset Scoreboard\n");
        printf("4. Quit\n");
        scanf("%d",&choice);

        switch (choice)
        {
            case '1' : play();
                break;
            case '2' : /*write function to do here */
                break;
            case '3' : /*write function to do here */
                break;
            case '4' :
                printf("Goodbye!\n");
                exit(0);
                break;
            default:
                printf("Please insert a correct choice.\n");
                break; 
        }
    } while (choice != 4);
}

void play(void)
{
    while(end != "n");
    {
        printf("Player Names\n\n");
        printf("Enter name for first player:\n");
        scanf("%s",&player_one);
        printf("Enter name for second player:\n");
        scanf("%s",&player_two);
        printf("Begin?(y to start, n to quit)\n");
        scanf("%c",&end);
    }
    return;
}
Run Code Online (Sandbox Code Playgroud)

谢谢大家,但我有问题,如果调用play()..即输入1 ..控制台只是查找输入,根本不打印功能信息.

Dra*_*rax 6

'1'并且1是不一样的东西

第一个是ascii字符,第二个是数字.

您可以'1'在ascii表中查找该值,并查看它是49,它不等于1.

尝试在控制台中输入49,只是为了好玩:)