目录
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.优化进度条
上述这个进度条只显示了####,有点丑,美化一下加一个中括号,后面再加一个百分比数字显示
你的程序可能中间运行有问题,所以我们加一个显示程序正常进行的图标
最终版本:
在优化,就是可以对其进行配色
如果输出空格 ,我们将颜色变成别的颜色,那么输出的就是色块百分比