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

