私はストリームについて読んでいて、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;
}
これらはバッファリングされていないストリームであるため、画面に書き込むとすぐに入力を標準出力に送信する必要があると思います...しかし、プログラムは各行を書き込んだ後にEnterキーを押すのを待ってから、出力のみが画面に表示されました( fwrite の結果)...私の質問は、これらがバッファリングされていないストリームであるのに、なぜプログラムがエンター(つまり、改行)を待っていたのかということです...