linux下进度条的实现及其理论思想

在编写进度条之前我们需要先了解一下进度条的实现原理,printf函数缓冲区问题以及 \n与\r的区别。

首先:进度条的实现原理:

             通过增加字符来保证进度的增加。所以我们给定一个102的定长数组(下标从0到101),0号下标不使用,1到100表示进度,101号表示进度条完成时的结束标志(C语言中字符串结束符是\0)。打印进度条时,只打印一行,并且是递增 形式的打印,所以需要回到当前行的起始位置并且实时刷新打印,此时就涉及到\r以及缓冲区的问题。

其次:\n与\r:

            \n:换行符+回车

            \r:回车符

最后:printf缓冲区:

       输出到屏幕相当于访问外设,而外设的速度和内存的速度是相差甚远的,如果每次输出都直接去访问外设,一定会造成效率的下降。所以,printf设置了三种缓冲方式。
      1.全缓冲,即整个缓冲区满才会输出到外设。
      2.行缓冲,即写满一行输出到外设,即遇到\n,
      3.无缓冲,不用等待,实时的输出。

      进度条需要实时显示当前状态,即采用无缓冲方式,此时就要使用fflush函数来实现。

下面是linux下进度条的简单实现:

运行结果如下图:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值