Linux下做一个简单的进度条

1.回车和换行问题

1.日常中的回车和换行

在这里插入图片描述
即:
回车:回到当前行的最开始
换行:列不变,新起一行

2.代码中的回车和换行

先写一段代码
(输出hello progress bar 然后睡眠五秒)
在这里插入图片描述
然后运行代码,
结果是:
先输出 hello progress bar
然后停留五秒空白时间,然后才有下一行指令
在这里插入图片描述

改变代码:(删除输出的"\n")
在这里插入图片描述
然后运行代码
在这里插入图片描述
五秒后
在这里插入图片描述

引申出来问题:
1.是不是sleep先于printf运行呢?
答:
绝对不是!
printf已经执行,但是数据没有被立即刷新到显示器当中。

可以推出:
没有\n ,字符串会暂时保存起来
暂时保存的地方是:用户C语言级别的缓冲区
显示器设备的刷新策略就是行刷新\n ,即进行刷新!

新问题:
我不写\n,也想有\n的效果该如何?
在这里插入图片描述
就会达到我们的效果
先显示输出,然后等五秒后显示后面指令行
在这里插入图片描述

延伸:
c程序,默认会打开三个输入输出流:
stdin键盘,stdout显示器,stderr显示器
这三个程序会在你写C代码的时候,默认会以C的方式进行打开

2.深入理解回车

1.我们先写一个倒计时

在这里插入图片描述
效果是这样的
在这里插入图片描述

这个代码是每输出一个数字,就会换行输出新的数字

2.我们不让他换行,只让他进行回车

相当于只写一个数字进来,在重新回到初始位置,然后输入新的数字进去
c语言里面规定\r 就会有如此功效
所以初步代码:
在这里插入图片描述
在这里插入图片描述
数据没有显示出来

原因:
因为你回车了,没有立即显示这里的数字
所以修改:
在这里插入图片描述
在这里插入图片描述

3.延伸:如果你的数组大于10就会有问题了

在这里插入图片描述
在这里插入图片描述
修改:
在这里插入图片描述
或者%2d (预留一个空格)
结果就是我们想要的结果

3.进度条开始

在这里插入图片描述

因为一百秒有些长,所以:ctrl+c 直接终止这个程序
在这里插入图片描述
sleep秒
usleep微秒
1000*1000微秒 = 1 秒

4.优化进度条

上述这个进度条只显示了####,有点丑,美化一下加一个中括号,后面再加一个百分比数字显示
在这里插入图片描述

在这里插入图片描述

你的程序可能中间运行有问题,所以我们加一个显示程序正常进行的图标

在这里插入图片描述
最终版本:
在这里插入图片描述
在优化,就是可以对其进行配色
如果输出空格 ,我们将颜色变成别的颜色,那么输出的就是色块百分比

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值