【发布时间】:2013-10-14 17:18:22
【问题描述】:
当我阅读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.) 从上面的代码中,即使我没有包含setvbuf(),我给程序的示例输入(123a 等)也会产生相同的输出。
2.) 我知道缓冲区是一个中间存储,可以在其中填充一大块数据,并且当缓冲区已满或给出换行符时,所有这些数据都将发送到输入或输出流。
3.) 那么禁用缓冲区有什么影响呢?是在性能方面吗?
【问题讨论】:
标签: c file-io stream buffer stdio