手把手教你如何在Linux下写进度条小程序(附源码)

简介: 手把手教你如何在Linux下写进度条小程序(附源码)

效果展示

录屏2023

一、建立文件

mkdir ProgressBar   //在当前目录下,建立新的目录
cd ProgressBar      //进入这个目录
touch main.c  makefile  progressbar.c  progressbar.h //在ProgressBar这个目录建立这几个文件

进入ProgressBar这个目录之后,使用ls命令查看是否创建成功

二、编写makefile文件

progressbar:progressbar.c main.c
  gcc -o $@ $^
.PHONY:clean
clean:
  rm -f progressbar

三、源码

把源码复制粘贴到我们对应的文件中

1. 头文件.h

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
#include <stdlib.h>
#define DOWNLOAD 1024*1024*1024 //1GB,下载的总大小
#define MAX 102   //str数组的长度
#define S '='      //数组的进度表示符号
void ProgressBar();   //函数声明

使用vim指令先打开头文件

vim progressbar.h

按小写i,进入插入模式(Insert),直接拷贝上去

再按esc,直接输入:wq(必须手动输入,这里不可以复制,而且必须有分号)


esc是让我们进入底行模式,按:wq是保存并退出,之后按同样的步骤完成下面几个文件的拷贝

2. 写函数定义的.c文件

#include "progressbar.h"
char str[MAX] = "\0"; //这里要定义一个全局字符数组,防止每次调用这个函数都要开辟空间,销毁空间,影响效率
char *ch = ". ";      // 这个字符串是为了表示下载一直在进行中,即使下载卡顿,也会转动,表示一直在下载;这里ch的字符串可以自己设定转动的字符,我这里设置的是.和空格,表示闪烁
int i = 0;            // 全局变量i,控制表示下载进行中的转动速度
void Init(int p)      //初始化进度条的内容,根据下载百分比来的,用图形表示当前的进度
{
  char *cur = str;
  for(int j = 0; j < p; j++)
  {
    str[j] = S;
  }
}
void ProgressBar(double percentage) //完成打印进度条的工作
{
  int len = strlen(ch);     //len是ch字符串的长度,让ch这个字符串一直在循环输出
    int p = (int)percentage;   //这里强转一下percentage是因为,p是表示str数组的下标
  if(percentage >= 100)      //如果下载百分比达到100.或者是大于100,就让他是100,符合我们日常逻辑
    percentage = 100;
  Init(p);                   //得知下载百分比之后,进入初始化str
    printf("[%-100s][%.2f%%][%c]\r", str, percentage, ch[i%len]);   //这里就是打印进度条
    fflush(stdout); //强制刷新缓冲区
  i++;           //让i不断增大
  i %= len;        //但是不能超过ch的长度
}

3. main函数的.c文件(函数调用的文件)

#include "progressbar.h"
void DownLoad()
{
    srand(time(NULL)^1023);  //设置一个随机数,用来分配速度
    int download = DOWNLOAD; //下载总量,可以自己设定
    int alreadydown = 0;     //已经下载的大小
    double percentage = 0;   //下载百分比
    int v = 0;               //下载速度
    while(alreadydown < download) //循环条件就是我们下载量是否大于总大小
    {
        usleep(100000); //休眠时间
        v = rand()%(1024*1024*40); //从随机数赋值速度,%后面的数字,是为了不让这个速度超过这个数字
        alreadydown += v;          //每次下载累积
        percentage = alreadydown*100.0 / download; //下载百分比*100,让我们更好查看,否则下完百分比是0.99,1.00等不好看
        ProgressBar(percentage);  //调用函数,这里函数主要完成打印进度条
    }
    printf("\n安装完毕!\n");
}
int main()
{
    DownLoad();
    return 0;
}

四、运行

拷贝完成后,直接使用下面指令

make

然后ls一下,会看到有一个可执行程序生成

运行这个可执行程序

./progressbar

至此我们就可以看到进度条的生成了~

五、处理

如果想删除所有文件

rm -rf *
cd ..
rm -rf ProgressBar


相关文章
|
21天前
|
小程序 数据安全/隐私保护
跑腿小程序系统源码
这是一款跑腿小程序,带有智能派单、系统派单、同城配送、校园跑腿、预约取件、用户端+骑手端 基于FastAdmin+thinkphp和uniapp开发的优创同城跑腿系统,支持帮取、帮送模式,包含用户端、骑手端、运营后台。
64 32
|
22天前
|
移动开发 开发框架 小程序
轻松搭建婚恋交友系统源码,H5/小程序/APP自动适配,智能匹配恋爱交友平台快速落地
婚恋交友系统涵盖在线交友、线下活动、专业服务、社交娱乐等,满足用户多样化需求。系统设计简洁易用,提供实名认证、多注册方式及安全保护,确保用户隐私和数据安全。功能丰富,支持图文展示、筛选匹配、聊天互动、虚拟礼物等,提升互动趣味性。平台可分类管理用户、审核信息、智能推荐,优化用户体验。基于TP6+Uni-app框架,实现跨平台同步,支持二次开发,适应不同市场需求。 [了解更多](https://gitee.com/multi-customer-software/jy)
|
21天前
|
小程序 IDE PHP
圈子源码如何打包生成App小程序/开发一个圈子系统软件所需要的费用体现在哪里?
将PHP源码打包成App的过程涉及多个步骤和技术选择。以圈子源码为例,首先明确需求,确定App功能和目标用户群体,并根据需求开发小程序页面,如用户注册、圈子列表等。源码准备阶段确保源码适用于小程序开发,环境配置需安装IDE(如微信开发者工具)及依赖库。最后在IDE中打包小程序并上传至管理平台,通过审核后发布。费用方面,模板开发成本较低,定制开发则更高,具体取决于需求复杂度和第三方服务费用。
57 0
|
2月前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
19天前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
18 0
|
2月前
|
小程序 安全 网络安全
清晰易懂!陪玩系统源码搭建的核心功能,陪玩小程序、陪玩app的搭建步骤!
陪玩系统源码包含多种约单方式、实时语音互动、直播间与聊天室、大神申请与抢单、动态互动与社交及在线支付与评价等核心功能。搭建步骤包括环境准备、源码上传与解压、数据库配置、域名与SSL证书绑定、伪静态配置及后台管理。注意事项涵盖源码安全性、二次开发、合规性和技术支持。确保平台安全、合规并提供良好用户体验是关键。
|
3月前
|
移动开发 小程序
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
仿青藤之恋社交交友软件系统源码 即时通讯 聊天 微信小程序 App H5三端通用
126 3
|
3月前
|
监控 小程序 前端开发
排队免单小程序开发源码案例
“排队免单小程序”旨在通过用户排队行为结合特定规则为用户提供免单或优惠机会,提升用户体验及商家流量。核心功能包括用户注册登录、排队管理、免单规则设置、支付与结算、商家管理和通知提醒等。技术上采用微信小程序开发框架,前后端分离架构,集成微信支付等服务,确保高效安全的数据处理与传输。项目开发过程涵盖需求分析、设计开发、集成测试和上线发布,后期注重数据监控、用户反馈和运营推广,以持续优化用户体验。
|
3月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
71 0
在线课堂+工具组件小程序uniapp移动端源码
|
4月前
|
存储 移动开发 小程序
小程序界面设计软件源码生成器
小程序界面设计软件源码生成器
99 5