Linux --进度条小程序更新

06-01 1019阅读

这里使用随机数来模拟下载量,来实现一个下载进度更新的小程序

main.c 的代码,其中downlod这个函数使用的是函数指针,如果有多个进度条函数可以传入进行多样化的格式下载显示,还需要传入一个下载总量,每次"下载以后刷新一次进度条",具体实现如下。

#include
#include
#include"process.h"
#include
const int base=100;
double total1 =2048.0;
double total2 =500.0;
double once =0.5;
typedef void (*flush_t)(double current,double total);
void downlod(flush_t f,double total)
{
  double current=0.0;
  double speed=0.0;
  while(current total)
  {
    current=total;
    process(current,total);
    usleep(100000);
    break;
  }
  f(current,total);
  usleep(100000);
  }
  printf("\n");
}
int main()
{
  srand(time(NULL));
  downlod(process,total1);
  downlod(process,total2);
  return 0;
}

process.c的实现与上一篇文章的方法类似,只是更改了一个下载样式 ' . ',lable使用一个数组来储存,其中点的个数由静态变量n控制,在第一个循环中当i等于NUM大小时会将最后一个字符设置为'\0',否则在打印的时候会出现“烫烫烫”等字符,这是因为字符串以'\0'作为结束标志。此次代码根据真实的应用场景,进行动态刷新,由percent控制'#'的数量。最后在打印进度条时还添加了当前下载量和总的下载量,下载完成时状态栏会显示Finish,具体实现如下。

#include"process.h"
#include
#define NUM 100
#define STYLE '='
#define POINT '.'
#define PUM 7
void process(double current, double total)
{
  char bar[NUM/2+2];
  memset(bar , '\0' , sizeof(bar));
  int percent=(int)(current / total * 100);
  int i = 0;
  for(i = 0; i 
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码