漫话linux:进度条项目补充组件:旋转光标

为了显示这个进度条一直在工作,可以添加一个旋转光标,就是在一个特定位置实现- \ - \ 的转化,以提示客户程序运行

const char *label="-/-\\";//(转义字符的用法)
int n=strlen(label);
printf("[%c]“,label[cnt%n]);

边界问题的探讨:将进度条的指示形式变为#####>

#include"proCess.h"
#include<string.h>
#include<unistd.h>
void processbar()
{
  char bar[NUM];
 
  memset(bar,'\0',sizeof(bar));
  int cnt=0;
  while(cnt<=100)
  {
  printf("[%-100s][%d%%]\r",bar,cnt);
   fflush(stdout);
  bar[cnt++]=STYLE;
if(cnt<=100)
  ban[cnt]='>';
 usleep(100000);
  }
  
}

这是一种覆盖的写法首先将下一个需要打印的位置放上#,并将下下个需要打印的位置放上>,这样就会在字符串的结尾保留一个>,当达到临界条件100时则防止将102位置的\0覆写掉,加一个判断语句

模拟下载

#include"proCess.h"
#include<string.h>
#include<unistd.h>
void processbar(int cnt)
{
  char bar[NUM];
 
  memset(bar,'\0',sizeof(bar));
 
  while(cnt<=100)
  {
  printf("[%-100s][%d%%]\r",bar,cnt);
   fflush(stdout);
  bar[cnt++]=STYLE;
  
if(rat<100)bar[rate]='>';
  }
  
}
void download()
{
int total=1000;
int cur=0;
while(cur<total
{
processbar(cur);
cur=cur+10;
usleep(10000);
}//模拟下载,隔一段时间显示一部分
}

通过函数指针回调展示进度(把processbar函数传进去)(通过回调显示进度)

typedef void (*press)(int);
void download(press cb)
{
int total=1000;
int cur=0;
while(cur<total
{
usleep(10000);
int rate=cur*100/tatal;
cb(rate);
cur=cur+10;

}//模拟下载,隔一段时间显示一部分
printf("\n");
}

rate表示进度,其中表示方式为cur/total算出比例再*100的数组长度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值