用进度条程序来看Linux中的printf函数(缓冲区)

本文通过一个进度条程序实例,探讨Linux中printf函数与缓冲区的关系。在程序执行过程中,发现输出的'-'字符并未按预期逐个显示,而是最后一次性输出。原因在于Linux的I/O优化——缓冲区机制,使得数据累积到缓冲区满或特定条件触发时才一次性写入显示器。为解决此问题,可通过手动刷新缓冲区并使用' '回车符使输出在当前行更新,从而实现进度条效果。
摘要由CSDN通过智能技术生成

题目:编译一个进度条程序,最终实现“—”逐渐增加
初级解法:用一个字符数组来存放“-”,用循环控制打印出来,再用usleep函数减缓程序执行速度,以便于我们看清打印过程。
在这里插入图片描述
在这里插入图片描述
看执行结果,“-”确实有每次都在增加,只不过打印时不应该换行。去掉换行之后
在这里插入图片描述
运行结果显示:一下子“-”都打印出来了,而且“-”打印出来不是最终的10个,而是把每个num【i】都打印了出来,可是代码也是正确的。明明应该是循环一次从头打印一次,最终出来是一点点增多的十个“-”,一下子都出来是为什么呢?

首先printf功能是向终端显示打印数据的–
Linux下一切皆文件,当printf被当做文件操作时,将数据写入显示器设备文件,数据就会被显示在显示屏上。
显示器文件在编程中被称为标准输出设备

缓冲区

这是Linux的一个优化,我们输出一个数据就要操作一次输出设备硬件,而硬件效率一般都很低,所以就在内存中划出一个缓冲区,用来存放要输出的数据,等到条

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值