实现一个简单的进度条

提纲:本文主要说明了Linux系统和Windows系统下回车和换行的区别,以及Linux下缓冲区的问题,最后运用这两点知识实现一个简单的进度条。
一、关于回车和换行
不同操作系统下的回车和换行
1、Windows操作系统下
回车’\r’:就是将光标移到本行的开头,并将之前的内容覆盖掉;
换行’\n’:就是将光标移到下一行的开头;

2、Unix/Linux系统下
回车’\r’:就是将光标移到本行的开头,并将之前的内容覆盖掉;
换行’\n’:就是将光标移到下一行,但并不一定是下一行的开头,如果下一行有内容的话就将光标移到那些内容的后面,如果下一行没有内容的话,就将光标移动到下一行的开头;

二、在Linux系统下实现一个简单的进度条
1、基本思路
(1)要实现一个进度条,首先先要给一段空间,我们假设这段空间是100,并且将它控制在[]之间;
(2)由于是一个进度条,因此要动态的增长,于是我们第一次输入一个字符‘#’,然后加上睡眠时间,再回到该行的起始位置输入两个‘#’字符,以此类推,就达到了进度条的效果;
2、代码实现,有了以上的思路,我们简单的实现一下代码:
这里写图片描述
运行此代码之后发现我的进度条是一段一段打印出来的,这就很尴尬了,查阅相关资料之后才发现,是因为我没有刷新缓冲区造成的
3、刷新缓冲区
printf是一个行缓冲函数,先写到缓冲区,满足条件后,才将缓冲区刷到对应文件中,刷缓冲区的条件如下:
(1)缓冲区填满;
(2)写入的字符中有‘\n’ ,’\r’;
(3)调用fflush手动刷新缓冲区;
(4)调用scanf要从缓冲区中读取数据时,也会将缓冲区内的数据刷新;
满足上述条件之一,就可以刷新缓冲区。
我们再来对我们的代码进行修改:在每次打印完之后,用fflush函数对缓冲区进行刷新,代码如下:
这里写图片描述
至此,我们可以实现进度条的基本功能了。
4、对进度条的两点完善
(1)由于在实际场景中,我们通常会看到进度条的后面都会有进度显示,即当前的进度是百分之几,因此我们在代码中加上进度显示,代码如下:
这里写图片描述
效果如下:
这里写图片描述
(2)如果想要进一步完善的话,可以再加上旋转的动态效果图,以判断程序运行的快慢以及是否卡住,完善后的代码如下:
这里写图片描述
至此,简单进度条的实现就完成了,重点是对平常用的回车和换行有了进一步的认识,同时还了解了一点缓冲区的概念~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值