本文将要概述
- printf的缓冲区问题;
- \r和\n的区别;
- 如何实现一个简易的进度条;
奇怪的现象
进度条是安装和下载软件中常见的部分,它可以表示软件安装或下载了多大,能给客户一种直观的感受,今天我们就来实现一个简易的进度条,基本构思是这样的,我们定义一个大小为102的字符数组,其中100个用来存储‘#’,每跑了进度条的1%它就会在字符数组中增长一个该符号。还有两块空间用于存放’\0’,和防止死循环问题(这是因为控制循环的变量被定义在数组的后面一块空间,对数组访问造成了越界的话很有可能修改这块空间的值,从而造成不可预料的后果)所以我们多开辟一块空间,避免这种情况的发生。
程序的思路是这样的,每一次循环都往字符数组中的当前位置写入’#’,并将控制循环变量+1,在写入’#’的下一个人位置写入’\0’,防止打印字符数组时出现乱码。循环次数控制在100次,每输入1行后我们输入\r对其清空,由于延时时间段和人眼的视觉暂留效应,你会看到进度条是一个一个#增长的。
理论上你应该看到这样的效果
[# ]
[## ]
.
.
.
[############################## ]
[############################### ]
[################################]
代码如下
由于本人这里没有截动态图的软件,当程序写好