只有缓冲区满了或者遇到“\n”才会打印到屏幕;
这样的c程序想必大家都不陌生,fflush()这个函数有清除输入输出缓存的功能,那很多人就会问了,什么是清除输入输出缓存呢?
其实就是我们在printf输出的时候,是先输出到一个叫缓存的地方去的,输出到那里后,然后才输出到屏幕上面去,但是因为for循环里只有一个printf语句,执行这一条语句的速度很快,因此如果不加fflush的话,你会发现是直接一次性打印到屏幕上的,其实是有经过一个缓存的过程,
但是如果加上fflush的话,那么就清除了缓存,也就是说每次 打印都会立刻输出到屏幕上去,stdout就是一个指针,指向屏幕的指针,准确地说是指向打印的窗口的指针。
#include<stdio.h>
#include<unistd.h>
int main()
{
for(int i=0;i<10;i++)
{
printf("%d",i);
sleep(1);
}
return 0;
}
上面代码打印很慢,要等0123456789一起输出;
加入fflush后:
#include<stdio.h>
#include<unistd.h>
int main()
{
for(int i=0;i<10;i++)
{
printf("%d",i);
fflush(stdout);//fflush(NULL);
sleep(1);
}
return 0;
}
打印很快,0123456789逐个直接输出;