我正在阅读有关流的信息,发现我们可以通过使用 setvbuf() 函数来控制流...它是在行缓冲模式下编写的,当遇到换行符并且在无缓冲时没有缓冲时,流将数据发送到文件。 ..所以我写了以下代码...
#include<stdio.h>
int main()
{
setvbuf(stdin, NULL, _IONBF, 40);
setvbuf(stdout, NULL, _IONBF, 40);
while(1)
{
char a[40];
int n;
n=fread(a, 1, 4, stdin);
if(n>0)
fwrite(a, 1, n, stdout);
}
return 0;
}
所以我认为因为这些是无缓冲的流,所以输入应该在我写入屏幕后立即发送到标准输出......但是程序等待我在写完每一行后按回车然后只有输出出现在屏幕上(如fwrite 的结果)...我的问题是为什么程序在这些是无缓冲的流时等待输入(即换行符)...