即使在 fflush 之后标准输出缓冲

stdout buffering even after 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,该程序似乎仍在缓冲字符直到换行符。为什么会发生这种情况,我该如何解决(如果可能)?

在这种情况下,缓冲由终端驱动程序完成,它不会将输入发送到您的程序,直到您按下 ENTER。所以你的程序甚至没有得到任何字符,甚至没有调用 fflush() 。它只是在等待 getchar() 调用中的输入。