在Linux下实现一个进度条程序,通过makefile进行编译

首先,我们需要知道进度条是怎么实现的?进度条的动态效果是利用人眼的视觉暂留做到的。比如说:

先输出: “= ”表示1%

在下一次则显示:“== ”

再一次: “=== ”

由于刷新速度很快,给人的感觉就是在逐次递增,直到完成加载。

这个程序中有几个需要注意的点:

1、缓冲区与回车换行

在使用printf的时候:printf(“hello\n”)------->buffer-------->file

printf并不会直接将数据写入终端显示文件,而是将数据先写入到一块缓冲区中(标准输出缓冲区),目的是为了提高写入效率(将碎片化的数据集中写入文件,而不是每得到一点数据都进行写入操作),等到手动刷新缓冲区,或者缓冲区内容写满的时候,才会将数据写入文件;

printf中的 \n 具有刷新缓冲区(将数据写入文件)的作用,当然主要作用还是换行,将输出起始位置移动到下行行首。

printf中的 \r 是回车作用,将输出起始位置移动到本行行首。此处我们并不需要换行。

因为printf会按行刷新,如果直接用的话就只能得到一个满的进度条了,所以就要用到 fflush()函数来强制刷新缓冲区了。

2、makefile

使用makefile自动化编译可以增加效率,尤其在项目源文件有若干个.c 和.h 文件的时候,这一特点更为明显。

第一行:依赖关系

第二行:依赖方法,(注意必须以Tab键开头,刚开始使用makefile一定要注意细节)

3、memset

对各种类型的数组进行初始化,避免出现野值。正确用法如下:

可以用任何值来初始化char数组,比如:memset(arr,‘a’,10);
可以用0来初始化任何类型数组,比如:memset(arr,0,sizeof(arr));
进度条代码如下:

其中"\e[31m"表示将输出的“=”的颜色改为红色,后面的“\e[0m”表示之后的颜色恢复到默认值,以避免影响到终端所有的显示文本颜色。

makefile:
源码安装
直接以原始码透过编译来安装与升级;
直接以编译好的binary program来安装与升级。
上面第一点很简单,就是直接以Tarball在自己的机器上进行侦测、编译、安装与设定等等动作来升级就是了,较麻烦。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值