82-Linux下printf函数的输出问题

在这里插入图片描述
向屏幕输出,C语言中可以使用printf函数,实际上,printf不是直接把数据输出到屏幕上的,首先把输出的内容写到缓冲区中,当缓冲区放满以后,它会把缓冲区的内容输出到屏幕上。
为什么这样做呢?
有一个效率的问题,因为要把printf输出的内容打印到屏幕上,首先要调用系统的接口来完成,屏幕是硬件设备,是由操作系统来管理的,因此printf在输出的时候要通过调用操作系统的接口才能完成,要从用户态切到内核态,开销是很大的,我们执行printf的时候,我们在库函数中就设置了缓冲区。
比如说,我们现在要在屏幕上输出hello,abc,123
我们可以先将它们统一放在缓冲区中,缓冲区放满以后,一次性打印到屏幕上,这样从用户态切换到内核态就1次就可以了。
所以printf就准备一个缓冲区,表面上看是把hello打印到屏幕上了,实际上是放到缓冲区,缓冲区放满了输出的到屏幕上。

printf 函数并不会直接将数据输出到屏幕,而是先放到缓冲区中,只有以下三种情况中的一种情况满足,才会输出到屏幕。
1 缓冲区满
2 强制刷新缓冲区 fflush 或者加上 \n
3 程序结束时

在这里插入图片描述
运行后 是屏幕上先空格闪5秒后才出现hello
在这里插入图片描述
在这里插入图片描述
进程是先刷新缓冲区才退出的哦
exit(0)调用后,刷新缓冲区,然后会调用_exit(0),这个才是真正退出进程的方法
所以,如果代码上写的是_exit(0),则没有刷新缓冲区就退出进程了。
在这里插入图片描述
在这里插入图片描述

给printf句末加上\n后
在这里插入图片描述

运行后,屏幕上先出现hello 再出现空格5秒
在这里插入图片描述
以下是另一种实现方式,用fflush强制刷新缓冲区
在这里插入图片描述

运行后如下 屏幕上先出现hello 再出现空格5秒
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值