6

当我运行以下程序时,我没有得到任何输出。

#include <stdio.h>

int main()
{
    printf("hello");
    while(1)
    {

    }   
    return 0;
}

而如果我编辑 printf 命令以在字符串末尾添加一个 '\n' 字符,那么预期的输出就会出现。第一个代码中发生了什么?我简直无法理解。

4

3 回答 3

11

这是因为 stdout 是行缓冲的,即在收集完整行之前,输出不会写入设备(终端)。

您可以调用fflush(stdout);以强制将缓冲区刷新到终端。不要试图stdin顺便冲水,那是不允许的。

于 2013-10-09T11:20:21.713 回答
2

尝试

printf("hello\n");

或者

printf("hello");
fflush(stdout)
于 2013-10-09T11:20:14.830 回答
0

采用printf("hello\n");

有关详细信息,请参阅此问题的答案。

于 2013-10-09T11:21:01.537 回答