の使用法について読んでいたときに、 (バッファリングなし) モードsetvbuf()
に出くわしました。_IONBF
そのため、バッファリングを無効にしようとすると、stdin と stdout がどのように影響を受けるのか興味がありました。以下はコード例です:
コード :
#include <stdio.h>
int main(void)
{
int num;
char a;
setvbuf(stdin, NULL, _IONBF, 0); //turn off buffering
scanf("%d", &num);
a = getchar();
printf("%d %c\n", num , a);
return 0;
}
質問 :
1.) 上記のコードから、プログラム (123a
およびその他) に与えたサンプル入力は、たとえ含まれていなくても同じ出力を生成しますsetvbuf()
。
2.) バッファーは、データのチャンクを入れることができる中間ストレージであり、バッファーがいっぱいになるか、改行が指定されたときに、それらすべてのデータが入力ストリームまたは出力ストリームに送信されることを理解しています。
3.)では、バッファを無効にするとどのような影響がありますか? 性能的にはどうか。