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

VS Code使用Code Runner运行C程序无输出无法接收用户输入问题

问题成因
  • I/O缓冲区机制导致输出滞留:C语言标准库的stdout默认采用行缓冲策略,仅当输出内容包含换行符\n、缓冲区被填满、程序正常退出时才会将缓冲区内容打印到终端。示例代码中所有printf语句末尾都没有添加换行符,输出内容暂存于缓冲区,后续scanf触发阻塞等待用户输入,程序未走到退出逻辑,缓冲区内容始终不会被刷出,因此看不到任何提示输出。
  • Code Runner默认运行环境不支持交互:Code Runner扩展默认将程序运行在VS Code的只读「输出」面板,该面板不接收用户输入,程序执行到scanf时直接进入永久阻塞状态,既没有输出也不会报错。
解决方法
  • 修复缓冲区未刷新问题,二选一即可:
    1. 为所有printf输出语句末尾添加换行符\n,触发行缓冲自动刷新,修改后的规范参考代码如下:
#include <stdio.h>
int main() {
    float n1, n2;
    
    printf("Enter 1st number: \n");
    scanf("%f", &n1);

    printf("Enter 2nd number: \n");
    scanf("%f", &n2);

    printf("Sum of %f + %f = %0.2f\n", n1, n2, n1 + n2);
    return 0;
}
  1. 在每句printf之后添加fflush(stdout);语句,主动强制刷新标准输出缓冲区,不需要修改原有打印内容。
  • 调整Code Runner运行环境支持交互:
    打开VS Code设置界面,搜索配置项code-runner.runInTerminal,勾选该配置后,Code Runner会将程序运行在可交互的集成终端中,即可正常接收用户输入。
  • 额外规范优化:将非标准的void main写法替换为C标准规定的int main写法,程序结束返回0,避免不同编译器下的兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:36:03