【发布时间】:2021-07-01 21:52:15
【问题描述】:
我试图运行这段代码:
printf("Enter a character.");
printf("\n");
do {
ch = getch();
system("cls");
putchar(ch);
} while(ch != '.');
上述代码在 Codeblocks 上运行良好,但在 Eclipse IDE 上无法运行。事实上,do while 循环之前的 printf 语句不起作用,但如果我禁用 do while 语句,printf 语句在 eclipse 上工作正常。你能解释一下为什么会这样吗?
【问题讨论】:
-
尝试在循环前添加
fflush(stdout) -
在 Eclipse 下运行的程序不一定与直接从命令行运行程序的行为相同,因为标准 I/O 通道通常不被视为“交互式设备”(终端),因此输出变为完全缓冲,并且在从标准输入输入之前不会自动刷新标准输出(无论如何,C 标准都不能保证,尽管当输出设备是终端时,大多数实现会在读取标准输入之前刷新标准输出)。
标签: c eclipse codeblocks