linux下进度条的实现

目录

一、代码一版

1.processbar.h

2.processbar.c

3.main.c

二、代码二版 

1.processbar.h

2.processbar.c

3.main.c

三、改变文字颜色


一、代码一版

使用模块化编程

1.processbar.h

#include<stdio.h>
#define capacity 101 //常量使用宏定义
#define style '=' //符号方便后续修改
extern void processbar();

 修饰变量的时候一定要带extern,修饰函数的时候可以省略,因为没有函数体就表明它一定是声明

2.processbar.c

#include"processbar.h"
#include<string.h>
#include<unistd.h>
char* load ="|/-\\"; 
void processbar()
{char bar[capacity];memset(bar,'\0',sizeof(bar));int size = strlen(load);int cent = 0;while(cent <=99){bar[cent++] = style;if(cent <= 99 )bar[cent] = '>';printf("[%-100s][%d%%][%c]\r",bar,cent,load[cent%size]);fflush(stdout);//没有\n就没法立即刷新,因为显示器模式是行刷新,因此手动刷新usleep(100000);//休眠xx微秒}printf("\n");
}

3.main.c

int main()
{processbar();return 0;
}

效果图,当进度未达到100时,在进度条最右端会有>,同时会有加载效果 由数组

char* load ="|/-\\";

进行实现 

二、代码二版 

processbar函数只负责打印,能更好地模拟下载过程

1.processbar.h

#include<stdio.h>
#define capacity 101
#define style '='
extern void processbar();

2.processbar.c

#include"processbar.h"
#include<string.h>
#include<unistd.h>
char* load ="|/-\\"; 
char bar[capacity];
void processbar(int cent)
{if(cent > 100 || cent < 0)return;int size = strlen(load);bar[cent++] = style;if(cent <= 99 )bar[cent] = '>';printf("[%-100s][%d%%][%c]\r",bar,cent,load[cent%size]);fflush(stdout);if(cent > 99)memset(bar,'\0',sizeof(bar));}

3.main.c

#include"processbar.h"
typedef void(*callback_t)(int);//回调函数void Download(callback_t cb)
{int total = 100;//100MBint curr = 0;while(curr < total){//假设有一个下载usleep(50000);//模拟下载的时间int rate = curr * 100 / total;//更新进度cb(rate);//通过回调函数显示进度curr += 1;}printf("\n");
}
int main()
{Download(processbar);printf("\n");Download(processbar);return 0;
}

临近字符串具有自动链接功能例如

printf("helloworld")

printf("hello""world")

三、改变文字颜色

//颜色宏定义
#define NONE         "\033[m"
#define RED          "\033[0;32;31m"
#define LIGHT_RED    "\033[1;31m"
#define GREEN        "\033[0;32;32m"
#define LIGHT_GREEN  "\033[1;32m"
#define BLUE         "\033[0;32;34m"
#define LIGHT_BLUE   "\033[1;34m"
#define DARY_GRAY    "\033[1;30m"
#define CYAN         "\033[0;36m"
#define LIGHT_CYAN   "\033[1;36m"
#define PURPLE       "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN        "\033[0;33m"
#define YELLOW       "\033[1;33m"
#define LIGHT_GRAY   "\033[0;37m"
#define WHITE        "\033[1;37m"

使用方法

1.如果你想要让某一段文字变成某个颜色

printf(YELLOW"this print msg is yellow!\n"NONE);

这两个指令相当于 开关,可以放置在任意位置。

如果开启开关,后面的所有字的颜色都会变成这个颜色

开启后关掉的话只会让某一段文字变色 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Perl文件句柄深度解析:掌握文件操作的核心

Perl中的文件句柄是进行文件输入输出操作的关键。它们提供了一种机制&#xff0c;允许Perl脚本打开文件、读写数据、定位文件指针&#xff0c;以及关闭文件。理解文件句柄的使用对于编写高效的Perl脚本至关重要。本文将深入探讨Perl文件句柄的概念、使用方法和最佳实践。 1. 文…

【Pytorch使用教程】torch.backends.cudnn.benchmark = True的作用

在 PyTorch 中,设置 torch.backends.cudnn.benchmark = True 是一种优化深度学习应用程序性能的方法,特别是当你有固定输入大小的时候。 解释 CuDNN:CUDA Deep Neural Network library(CuDNN)是 NVIDIA 提供的一个 GPU 加速库,用于深度神经网络。PyTorch 在底层使用 Cu…

代码随想录——买股票的最佳时机Ⅱ(Leecode122)

添加链接描述 贪心 局部最优&#xff1a;手机每天的正利润 全局最优&#xff1a;求最大利润 class Solution {public int maxProfit(int[] prices) {int res 0;for(int i 1; i < prices.length; i){res Math.max(prices[i] - prices[i - 1], 0);}return res;} }

【计算机视觉】mmcv库详细介绍

文章目录 MMVC库概览特点和优势主要组件应用案例示例一:数据加载和处理示例二:模型训练和验证MMVC库概览 MMCV 是一个用于计算机视觉研究的开源库,它为各种视觉任务提供了底层的、高度优化的 API。该库涵盖了从数据加载到模型训练的各个方面,广泛应用于开源项目,如 MMDet…

webstorm无法识别tsconfig.json引用项目配置文件中的路径别名

问题 vite项目模板中&#xff0c;应用的ts配置内容写在tsconfig.app.json文件中&#xff0c;并在tsconfig.json通过项目引用的方式导入 {"files": [],"references": [{"path": "./tsconfig.app.json"},{"path": "./t…

2024-06-25 问AI: 在大语言模型中, Hugging Face 是什么?

文心一言 Hugging Face 在大语言模型领域中是一个非常重要的存在&#xff0c;它主要提供了一系列自然语言处理&#xff08;NLP&#xff09;相关的工具和资源。以下是关于 Hugging Face 的详细介绍&#xff1a; 公司背景&#xff1a;Hugging Face 是一家成立于2016年的开源模型…

2024年第十五届蓝桥杯青少组大赛8月24日开启

据蓝桥杯青少组官网显示&#xff0c;2024年第十五届蓝桥杯青少组大赛8月24日开启。 蓝桥杯青少组历届题库地址&#xff1a;http://www.6547.cn/question/cat/2 蓝桥杯青少组历届真题下载&#xff1a;http://www.6547.cn/wenku/list/10

python基础1.2----爬虫基础

python基础内容之爬虫 ## 1. 关于爬虫的特殊性 爬虫是一个很蛋疼的东西, 可能今天讲解的案例. 明天就失效了. 所以, 不要死盯着一个网站干. 要学会见招拆招(爬虫的灵魂) 爬虫程序如果编写的不够完善. 访问频率过高. 很有可能会对服务器造成毁灭性打击, 所以, 不要死盯着一个网…

MySQL用户管理和高级SQL语句

一、用户管理 1.新建用户 mysql> create user zhangsanlocalhost identified by pwd123; Query OK, 0 rows affected (0.00 sec)mysql> create user lisilocalhost identified by pwd123; Query OK, 0 rows affected (0.00 sec)mysql> create user wangwulocalhost …

统一视频接入平台LntonCVS视频共享交换平台智慧景区运用方案

随着夏季的到来&#xff0c;各地景区迎来了大量游客&#xff0c;而景区管理面临的挑战也愈加严峻&#xff0c;尤其是安全问题显得格外突出。 视频监控在预防各类安全事故方面发挥着重要作用&#xff0c;不论是自然景区还是人文景区&#xff0c;都潜藏着诸多安全隐患&#xff0…

每日一道算法题 成绩排序

题目 成绩排序_牛客题霸_牛客网 (nowcoder.com) Python nint(input()) flagint(input()) ans[] for _ in range(n):name,scoreinput().split( )ans.append([name,int(score)]) ans.sort(keylambda x:x[1],reverse not flag)for e in ans:print(e[0],e[1],sep )C #include &…

排序之插入排序----直接插入排序和希尔排序(1)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 排序之插入排序----直接插入排序和希尔排序(1) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记&#xff0c;欢迎大家在评论区交流讨…

图形编辑器基于Paper.js教程04: Paper.js中的基础知识

背景 了解paper.js的基础知识&#xff0c;在往后的开发过程中会让你如履平地。 基础知识 paper.js 提供了两种编写方式&#xff0c;一种是纯粹的JavaScript编写&#xff0c;还有一种是使用官方提供的PaperScript。 区别就是在于&#xff0c;调用paper下的字对象是否需要加pa…

使用Python获取1688商品详情的教程

如何使用Python编程语言来获取1688网站上的商品详情信息。通过本教程&#xff0c;读者将学会使用Python的请求库和解析库来爬取商品数据。 目录 简介环境准备编写爬虫代码处理和存储数据快速获取遵守法律法规和网站政策 1. 简介 1688是中国领先的B2B电子商务平台&#xff0…

Windows server 由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。

问题现象&#xff1a; 解决办法 临时远程方式1: 打开 mstsc 时带上 /admin 等参数&#xff0c;如下图所示&#xff1a; 使用“mstsc /admin /v:目标ip”来强制登录服务器&#xff0c;但只能是管理员身份。 远程方式2&#xff1a; 通过VM远程登陆系统后&#xff0c;运行输入R…

【Python Cookbook】S03E02 执行精确的小数计算 decimal, math.fsum()

目录 问题解决方案讨论 问题 如果我们需要对小数执行精确的计算&#xff0c;并且不希望因为浮点数的误差带来影响&#xff0c;我们该怎么做&#xff1f; 解决方案 关于浮点数&#xff0c;一个人尽皆知的问题就是其无法精确地表达出所有十进制小数位&#xff0c;因此甚至简单…

Python编程编辑器PyCharm 界面介绍

PyCharm 界面介绍 当你打开 PyCharm 后&#xff0c;会看到以下主要界面区域&#xff1a; 1&#xff09;菜单栏&#xff1a; 位于界面最顶端&#xff0c;包含文件&#xff08;File&#xff09;、编辑&#xff08;Edit&#xff09;、查看&#xff08;View&#xff09;、导航&a…

qemu 调试 Linux kernel 基于 x86_64

配置qemu&#xff1a; cd qemu/ mkdir build cd build/ $ ../configure --enable-slirp \ --enable-slirp-smbd --smbd/home/hipper/ex_ubuntu-22.4.4-live-server_qemu/smba_00 \ --target-list"riscv32-softmmu riscv64-softmmu x86_64-softmmu" make -j 创建…

ICMAN液位检测——WS003B管道检测模组

ICMAN液位检测之WS003B管道检测模组 体积小&#xff0c;成本低&#xff0c; 液位检测精度高&#xff0c; 有水输出低电平无水高电平&#xff0c; 适用于饮水机、咖啡机、扫地机器人、洗地机等&#xff0c; 有需要朋友快联系我吧&#xff01; AWE展会不容错过的ICMAN检测模组…

[大师C语言(第四十篇)]C语言最危险行为盘点

C语言因其高效和灵活性被广泛应用于系统编程、嵌入式系统、操作系统等领域。然而&#xff0c;这些特性也使得C语言容易产生一些危险行为&#xff0c;可能导致程序错误、安全漏洞甚至系统崩溃。本文将盘点C语言中最危险的行为&#xff0c;并对其背后的技术进行详细解析。 第一部…