即使在fflush之后,stdout缓冲

时间:2015-06-27 10:20:02

标签: c stream buffer stdout fflush

我编写了一个简单的C程序,用于将stdin传递给stdout而不缓冲字符:

#include <stdio.h>

int main (int argc, char *argv[])
{
  int c;

  while ((c = getchar()) != -1) {
    putchar(c);
    fflush(stdout);
  }

  return 0;
}

然而,尽管调用了fflush,这个程序似乎仍然会在换行符之前缓冲字符。为什么会发生这种情况?如何解决?(如果可能的话)?

1 个答案:

答案 0 :(得分:1)

在这种情况下,缓冲由终端驱动程序完成,终端驱动程序不会将输入发送到您的程序,直到您按 ENTER 。因此,您的程序甚至无法获得任何字符,甚至不会调用fflush()。它只是在getchar()来电等待输入。