C语言程序拒绝输出调试信息到控制台,原因何在?
C语言循环内printf无输出问题排查
问题根源
- 标准输出缓冲未刷新:
printf默认采用行缓冲模式,只有遇到换行符\n、缓冲区填满,或者程序正常退出时,才会将缓冲区内容输出到控制台。你的代码中,两个printf都未添加换行符,且循环是死循环(gameRunning始终为1),程序不会终止,缓冲区内容一直积压无法显示。 - 语法错误:循环内的
debugging is fun!未添加注释符号(//),属于非法代码,会导致编译失败,这也是程序无法正常运行的原因之一。
修复代码
/** * Src for Planet Miner: Endless Space */ #include <stdio.h> #include <stdlib.h> const char version[] = "a0.1_0"; int main() { // 添加换行符触发缓冲区刷新 printf("Starting game... version %s\n", version); int gameRunning = 1; do { printf("O\n"); // 换行刷新缓冲区 // debugging is fun! // 补全注释标记 } while (gameRunning == 1); return 0; }
替代方案(无需换行)
如果不想使用换行符,可以在printf后调用fflush(stdout)强制刷新缓冲区,示例:
printf("O"); fflush(stdout); // 强制输出缓冲区内容
内容的提问来源于stack exchange,提问作者TPGlitch
相关产品推荐
相关产品推荐

