观察下面四种场景,看会出现什么现象?
1.
#include<stdio.h>
int main()
{
printf("hello 行缓冲\n");
return 0;
}
运行结果:
ps:字符串”hello 行缓冲”被放到缓冲区之后,遇到换行符”\n”,此内容就会被刷新(即就是此字符串会被显示到屏幕上)
2.
#include<stdio.h>
int main()
{
printf("hello 行缓冲\n");
sleep(5);
return 0;
}
运行结果:
字符串”hello 行缓冲”被放到缓冲区中后,遇到”\n”就会刷新缓冲区(即就是把缓冲区中的内容显示到屏幕上),再接着执行sleep函数,所以sleep函数对printf的输出不会产生影响
3.
#include<stdio.h>
int main()
{
printf("hello 行缓冲");
sleep(5);
return 0;
}
ps:字符串”hello 行缓冲”被放到缓冲区中后,再接着执行sleep函数,5秒过后,程序return退出,在程序退出前会刷新缓冲区,此字符串此时才会被显示到屏幕上
运行结果:
4.
#include<stdio.h>
int main()
{
printf("hello 行缓冲");
fflush(stdout);
sleep(5);
return 0;
}
运行结果:
ps:字符串”hello 行缓冲”被放到缓冲区中后,接着执行fflush函数,此函数的作用是刷新缓冲区,虽然没有换行符,但是缓冲区中的内容也被显示到屏幕上了,再接着执行sleep函数,5秒过后,程序正常退出