当我运行以下程序时,我没有得到任何输出。
#include <stdio.h>
int main()
{
printf("hello");
while(1)
{
}
return 0;
}
而如果我编辑 printf 命令以在字符串末尾添加一个 '\n' 字符,那么预期的输出就会出现。第一个代码中发生了什么?我简直无法理解。
当我运行以下程序时,我没有得到任何输出。
#include <stdio.h>
int main()
{
printf("hello");
while(1)
{
}
return 0;
}
而如果我编辑 printf 命令以在字符串末尾添加一个 '\n' 字符,那么预期的输出就会出现。第一个代码中发生了什么?我简直无法理解。
这是因为 stdout 是行缓冲的,即在收集完整行之前,输出不会写入设备(终端)。
您可以调用fflush(stdout);
以强制将缓冲区刷新到终端。不要试图stdin
顺便冲水,那是不允许的。
尝试
printf("hello\n");
或者
printf("hello");
fflush(stdout)
采用printf("hello\n");
有关详细信息,请参阅此问题的答案。