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

在VSCode中使用GCC编译C代码时scanf无法正常工作的问题求助

问题原因与解决办法

你的问题出在标准输出的缓冲机制上。

默认情况下,C语言的stdout是行缓冲模式:只有当输出内容包含换行符\n,或者缓冲区被填满、程序结束时,才会把缓冲区里的内容真正输出到终端。你的printf语句结尾没有换行,VSCode的集成终端在缓冲处理上和普通终端有差异,导致提示内容一直留在缓冲区里没显示出来——程序其实卡在scanf等待输入,但你看不到任何提示,误以为程序没正常运行。

给你几个直接的解决办法:

  • 给printf加上换行符,触发行缓冲自动刷新:
printf("What is your guess?\n--> ");
int guess;
scanf("%d", &guess);
  • 手动强制刷新输出缓冲区,不管有没有换行都能立刻显示内容:
printf("What is your guess?\n--> ");
fflush(stdout); // 强制刷新缓冲区
int guess;
scanf("%d", &guess);
  • 修改VSCode运行配置:在.vscode/launch.json里添加或设置"externalConsole": true,让程序弹出独立的外部终端运行,和直接在终端执行的行为完全一致。

内容的提问来源于stack exchange,提问作者Victor De coole

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:22:35