Linux环境下:printf输出问题(缓冲区刷新)
Linux环境下:printf输出问题(缓冲区刷新)
·
printf函数输出问题
printf 函数并不会直接将数据输出到屏幕,而是先放到缓冲区中,只有以下三种情况满足,才会输出到屏幕。
- 缓冲区满了
- 强制刷新缓冲区
- 程序结束时
1.缓冲区满
这里没法举例说明,因为缓冲区可能有 几M大小 (滑稽)。
2.强制刷新缓冲区
- 使用 fflush来刷新
示例:原程序
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(void)
{
printf("hello world");
sleep(5);
exit(0);
}
在程序结束,即睡了五秒后,才显示出要打印的
使用fflush:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(void)
{
printf("hello world");
fflush(stdout);
sleep(5);
exit(0);
}
这里在printf语句结束后,使用fflush强制刷新缓冲区,就先打印出来内容,再执行的 sleep语句。
- 使用 '\n’
示例:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(void)
{
printf("hello world\n");
//fflush(stdout);
sleep(5);
exit(0);
}
运行:
使用换行符,也会刷新缓冲区,再sleep.
3.程序结束时
就像上面的示例:
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(void)
{
printf("hello world");
sleep(5);
exit(0);
}
等到程序结束时候,printf的内容才显示出来。
更多推荐
已为社区贡献1条内容
所有评论(0)