【Linux】实现一个进度条

devtools/2025/1/25 2:26:18/

我们之前也学了gcc/vim/make和makefile,那么我们就用它们实现一个进度条。

在实现这个进度条之前,我们要先简单了解一下缓冲区和回车和换行的区别

缓冲区其实就是一块内存空间,我们先看这样一段代码

它的现象是先立马打印,三秒后程序结束

我们在看这个,只是去掉了\n,它的现象是前三秒空白,最后一秒打印出了字符串并且程序结束

我们感觉第二段代码是先执行的sleep,后执行printf,但是怎么可能呢?我们C语言都是从上往下执行的,所以其实第二段代码一开始字符串是先放倒了缓冲区里边,然后程序结束缓冲区刷新出来了;而第一段代码是\n会刷新缓冲区

我们平常用的 \n 其实是换行+回车,也就是说从上一行到下一行的对应位置叫换行,从中间位置到一行的最开始位置叫回车。我们的 \r 就可以实现仅回车的功能,并且它是不会刷新缓冲区的,我们也有一个函数fflush强制刷新缓冲区

它的参数是一个文件流,我们有这几种文件流

我们这里用stdout让它刷新出来

这样我们就简单的实现了一个倒计时

那么我们下边就写一个超级简单的进度条,后边再去慢慢的优化

下面我们把进度条分成多个文件来综合使用一下makefile,所以再这个文件夹下,我们就有这几个文件

我们需要在makefile中写明它们之间的依赖关系和依赖方法,大致就像这样

我们写完makefile之后可以先写一个简单的程序试一下,确保我们的makefile不会出现问题后我们再写进度条,可以像这样

我们可以在底行模式下用vs+文件名将三个文件同时展开,如果要实现三个文件之间的切换可以在命令模式用ctrl+w再加方向键实现切换

有了这样的一些基础我们就可以只在processbar.c中写进度条了,大概是这样的

进度条大概长这样

分别是进度条,比例和旋转的图案

但是在实际情况中,进度条肯定不是单独的,它是跟比如下载进度等相关联的,所以我们这里就先模拟一种场景,来实现进度条

这里用到了函数指针的typedef,通过函数指针去调用函数,就是我们说的回调函数


http://www.ppmy.cn/devtools/11379.html

相关文章

ClickHouse 集群部署(不需要 Zookeeper)

目录 一、单节点设置 1. 下载 2. 安装 3. 启动 4. 验证 二、导入示例数据集 1. 下载并提取表数据 2. 创建库表 3. 导入数据 4. 优化表 5. 查询示例 三、集群部署 0. 安装前准备 1. 安装配置 ClickHouse Keeper (1)安装 ClickHouse Server…

Ubuntu或Debian系统的漏洞修复:apt安装包管理工具

在阿里云主机管理后台->安全云中心,会看到系统最新的公布漏洞。 对于系统软件漏洞,我们还是要早做修复,防患于未然。 但安全云中心的功能大部分需要付费,包括一键修复,自己修复软件漏洞怎么操作呢? 其…

【Qt 学习笔记】Qt常用控件 | 按钮类控件 | Check Box的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 按钮类控件 | Check Box的使用及说明 文章编号&#xff…

ruoyi element-ui 实现拖拉调整图片顺序

ruoyi element-ui 实现拖拉调整图片顺序 安装sortablejs https://sortablejs.com/npm 安装sortablejs npm install sortablejs --save相关options var sortable new Sortable(el, {group: "name", // or { name: "...", pull: [true, false, clone, …

R语言入门:R中导入数据有哪些格式?

1、文本文件 CSV文件(逗号分隔值):使用 read.csv() 或 read.csv2() 函数。文本文件(以空格、制表符等分隔):使用 read.table() 函数。文本文件(固定宽度格式):使用 read…

用python写一个高并发请求的request,要求有请求的数据data/query,记录并发数及响应的时间

在Python中实现高并发请求,可以使用concurrent.futures模块来管理线程池或进程池,以并发执行HTTP请求。以下是一个简单的示例,使用requests库发送HTTP请求,并使用ThreadPoolExecutor来实现并发请求。此示例还包括记录请求的并发数和每个请求的响应时间。首先,确保安装了re…

23年新算法,SAO-SVM,基于SAO雪消融算法优化SVM支持向量机回归预测(多输入单输出)-附代码

SAO-SVM是一种基于SAO雪消融算法优化的支持向量机(SVM)回归预测方法,适用于多输入单输出的情况。下面是一个简要的概述,包括如何使用SAO-SVM进行回归预测的步骤: 步骤: 1. 数据准备: 收集并准…

Scala之List

列表 不可变列表(List) 在Scala中,通过List来定义不可变列表,需要注意的是,List本身是一个抽象类,所以并不能直接使用List来构建对象,需要使用它的伴生对象来构建 package com.fesco.listimport scala.::object ListD…