我编写了一个简单的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
,这个程序似乎仍然会在换行符之前缓冲字符。为什么会发生这种情况?如何解决?(如果可能的话)?
答案 0 :(得分:1)
在这种情况下,缓冲由终端驱动程序完成,终端驱动程序不会将输入发送到您的程序,直到您按 ENTER 。因此,您的程序甚至无法获得任何字符,甚至不会调用fflush()
。它只是在getchar()
来电等待输入。