linux :vim 实现命令行下输出进度条

本文详细介绍了进度条的工作原理,包括利用人的视觉暂留效果来模拟进度增长的过程,并解释了缓冲区的不同类型及其作用。此外,还介绍了如何通过控制台输出实现进度条,涉及到回车与换行的区别以及如何使用fflush函数来刷新输出缓冲区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、  进度条原理:

进度条的的动态增长是利用人的视觉短暂停留效果的,不断从输出缓冲区刷新出相同的内容,在肉眼看来进度条在不断的增长。

在显示器上先输出[#                                          ][%1]

刷新一次之后,     [##                                          ][%2],由于刷新很快,看起来进度 ‘#’不断增长,直到进度完成%100

2、  缓冲区:

缓冲区(buffer)这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合. 后来这个意思被扩展了,成为"临时存贮区"的意思。

缓冲区分为:无缓冲、行缓冲、全缓冲。

无缓冲:表示的是没有缓冲,可以将信息立马显现出来,典型代表是标准错误流stderr。

行缓冲:表示的是输入输出遇到换行才执行真正的I/O操作。典型的代表是键盘的操作。

全缓冲:表示的是输入输出写满缓冲区才执行I/O操作。典型的代表是磁盘的读写。

3、 回车换行:

回车用'\r'表示,表示的是回到这行的起始位置。换行用‘\n'表示,表示的是换行到下一行。

在C语言中,刷新缓冲区的函数是fflush函数,强制刷新缓冲区。实现这个进度条应使用的是无缓冲,实时的将进度条的变化显现出来。在这里,不需要换行只需要回车。

4、 fflush:

fflush,函数名, 清除读写缓冲区,需要立即把输出缓冲区的数据进行物理写入时。

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准]

fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备

 

5、进度条代码如下:

Progress_bar.c

 

 

Makefile :

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值