You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中C语言scanf后switch语句无法运行问题求助

问题分析与解决

你的代码核心问题出在scanf的调用上:

scanf("%d", choixMenu);这里传递的是变量choixMenu的值,而非它的内存地址。scanf需要通过地址来修改目标变量的值,直接传值会导致程序尝试写入非法内存区域,触发未定义行为(比如程序直接崩溃退出,无任何输出)。

修正方法

给choixMenu加上取地址符&,让scanf能正确获取变量的内存地址:

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

int main(int argc, char *argv[])
{
    int choixMenu;

    printf("=== Menu ===\n\n");
    printf("1. Royal Cheese\n\n");
    printf("2. Mc Deluxe\n\n");
    printf("3. Mc Bacon\n\n");
    printf("4. Big Mac\n\n");
    printf("Votre choix ? ");

    // 修正:添加取地址符&
    scanf("%d", &choixMenu);

    switch (choixMenu)
    {
        case 1:
            printf("Tu as choisi le Royal Cheese\n");
            break;
        case 2:
            printf("Tu as choisi le Mc Deluxe\n");
            break;
        case 3:
            printf("Tu as choisi le Mc Bacon\n");
            break;
        case 4:
            printf("Tu as choisi le Big Mac\n");
            break;

        default:
            printf("Vous n'avez pas rentré un nombre correct (entre 1 et 4)");
            break;
    }

    return 0;
}

额外建议

为了让程序更健壮,可以检查scanf的返回值,确保输入是有效的整数:

// 替换原scanf行
if (scanf("%d", &choixMenu) != 1) {
    printf("输入无效,请输入1-4之间的数字\n");
    return 1;
}

这样如果用户输入非数字内容,程序会给出明确提示并退出,避免后续逻辑出现异常。

内容的提问来源于stack exchange,提问作者jason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 07:36:28