linux 文件系统 进度条,linux终端进度条

0. 这个是在oschina上看到的,很实用,可在代码中添加,权当库使用,小巧实用

1. 地址在此

url = https://git.oschina.net/lionsoul/ltpro.git

2. 细看代码,实现原理就是按比例打印对应彩色字符。可用于进度等。此方法也可用于任何彩色终端

看主要应用

3.详细代码

/**

* linux terminal progress bar (no thread safe).

* @package progress.c

*

* @author chenxin

*/

#include

#include

#include

#include "ltpro.h"

/**

* initialize the progress bar.

* @max = 0

* @val = 0

* bar:结构体

* max:bar长度

* title:bar的名字,显示在前面

* style:显示模式

*/

extern void progress_init(

progress_t *bar, char *title, int max, int style)

{

bar->chr = '#';//这个可以改成=

bar->title = title;

bar->style = style;

bar->max = max;

bar->offset = 100 / (float)max;

bar->pro = (char *) malloc(max+1);

if ( style == PROGRESS_BGC_STYLE )

memset(bar->pro, 0x00, max+1);

else {

memset(bar->pro, 32, max);

memset(bar->pro+max, 0x00, 1);

}

}

extern void progress_show( progress_t *bar, float bit )

{

int val = (int)(bit * bar->max);

switch ( bar->style )

{

case PROGRESS_NUM_STYLE:

printf("\033[?25l\033[31m\033[1m%s%d%%\033[?25h\033[0m\r",

bar->title, (int)(bar->offset * val));

fflush(stdout);

break;

case PROGRESS_CHR_STYLE:

memset(bar->pro, '#', val);

printf("\033[?25l\033[31m\033[1m%s[%-s] %d%%\033[?25h\033[0m\r",

bar->title, bar->pro, (int)(bar->offset * val));

fflush(stdout);

break;

case PROGRESS_BGC_STYLE:

memset(bar->pro, 32, val);

printf("\033[?25l\033[31m\033[1m%s\033[41m %d%% %s\033[?25h\033[0m\r",

bar->title, (int)(bar->offset * val), bar->pro);

fflush(stdout);

break;

}

}

//destroy the the progress bar.

extern void progress_destroy(progress_t *bar)

{

free(bar->pro);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值