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



