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
相关产品推荐
相关产品推荐

