setbuf函数用于打开和关闭缓冲机制,今天看看关闭缓冲区的功能。昨天在网上看到一个小程序,printf打印不出数据来,我们来看看。
#include <stdio.h>
int main(void)
{
int i=0;
for(i=0;i<10;i++)
{
printf("haha");
sleep(1);
}
return 0;
}
编译运行,结果打印不出haha结果。因为没遇到换行也没有填满缓冲区,所以打印不出来,再看。
#include <stdio.h>
int main(void)
{
int i=0;
setbuf(stdout,NULL);
for(i=0;i<10;i++)
{
printf("haha");
sleep(1);
}
return 0;
}
编译运行,打印:hahahaha
陆续都打印出来了。这是因为setbuf关闭了缓冲,将标准输出设置为不带缓冲的,于是每个haha打印一次。
参考地址:http://www.dewen.net.cn/q/275