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

使用VS Code运行简单C程序时无输出无法输入持续挂起问题求助

问题根因与修复方案

你的代码存在3处明确错误,对应你描述的异常表现:

  • scanf 参数缺少取地址符:scanf 需要接收变量的内存地址才能修改其存储的数值,你直接传入age变量本身属于未定义行为,会触发非法内存访问。
  • scanf 格式串多余\n:格式串中的空白符(换行、空格、制表符)会让scanf持续吞掉所有后续输入的空白字符,直到遇到非空白字符才会终止匹配,因此你输入数字加回车后程序仍会卡住等待输入。
  • printf 输出未刷新到屏幕:C语言标准输出stdout默认是行缓冲模式,仅在遇到换行符、缓冲区满、程序正常退出、主动调用fflush时才会把缓冲区内容打印到终端,你的printf结尾没有加换行符,提示语会停留在缓冲区不可见。你移除scanf后程序运行正常,就是因为程序退出时自动刷新了缓冲区,之前滞留的提示语才会显示出来。

修复后的完整代码

#include <stdio.h>

int main()
{
    int age;
    printf("Please enter your age: ");
    fflush(stdout); // 主动刷新缓冲区,确保提示语立刻显示
    scanf("%d", &age); // 删除格式串中多余的\n,添加取地址符&
    printf("Your age is: %d\n", age); // 末尾加换行符,确保输出立即打印
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:24:01