当我阅读有关 的用法时setvbuf()
,我遇到了_IONBF
(无缓冲)模式。所以我很好奇如果我尝试禁用缓冲将如何影响标准输入和标准输出。下面是一个示例代码:
编码 :
#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.)那么禁用缓冲区有什么影响?是在性能方面吗?