当我运行以下程序时,我没有得到任何输出。
#include <stdio.h>
int main()
{
printf("hello");
while(1)
{
}
return 0;
}
如果我编辑printf命令以在字符串的末尾添加'\ n'字符,那么预期的输出就会出现。第一个代码中发生了什么?我根本无法理解。
答案 0 :(得分:11)
这是因为stdout 行缓冲,即输出不会写入设备(终端),直到收集完一行。
您可以调用fflush(stdout);
强制将缓冲区刷新到终端。不要试图冲洗stdin
,这是不允许的。
答案 1 :(得分:2)
尝试
printf("hello\n");
或
printf("hello");
fflush(stdout)
答案 2 :(得分:0)
您应该在输出结尾处打印换行符。否则它将调用未定义的行为(至少可能是未定义的)。
答案 3 :(得分:0)
使用printf("hello\n");
有关详细信息,请参阅this question的答案。