setbuf()关闭缓冲

                  setbuf函数用于打开和关闭缓冲机制,今天看看关闭缓冲区的功能。昨天在网上看到一个小程序,printf打印不出数据来,我们来看看。

#include 



int main(void)
{
    int i=0;

    for(i=0;i<10;i++)
    {
       printf("haha");
       sleep(1);
    }

    return 0;
}

编译运行,结果打印不出haha结果。因为没遇到换行也没有填满缓冲区,所以打印不出来,再看。

#include 



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



你可能感兴趣的:(C/C++)