【Linux】实现一个进度条

news2025/4/14 21:21:09

我们之前也学了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.coloradmin.cn/o/1619725.html

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

相关文章

centos7.6上安装mysql7.6 完整过程

安装过程: 参考:https://blog.csdn.net/qq_45103475/article/details/123151050 查找mysql [rootbogon ~]# whereis mysql mysql: /usr/lib64/mysql /usr/share/mysql 删除目录 [rootbogon ~]# rm -rf /usr/lib64/mysql [rootbogon ~]# whereis mysql m…

ClickHouse 高可用之副本

文章目录 ClickHouse 副本支持副本的引擎配置高可用副本副本应用1.副本表概述2.创建副本表3.写入模拟数据4.副本验证 扩展 —— 在 Zookeeper 中查看副本表信息 ClickHouse 副本 ClickHouse 通过副本机制,可以将数据拷贝存储在不同的节点上。这样,如果一…

python 如何判断两个字典是否相等

Python 字典的 cmp() 函数用于比较两个字典元素。 语法 cmp()方法语法: cmp(dict1, dict2)参数 dict1 -- 比较的字典。 dict2 -- 比较的字典。 返回值 如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于…

白酒:香型对白酒品质的影响与消费者偏好

云仓酒庄的豪迈白酒认为香型对白酒品质的影响与消费者偏好是值得探讨的话题。香型作为白酒品质的重要因素之一,对白酒的口感、风味和品质产生着深远的影响。同时,消费者的偏好也是决定香型选择的重要因素之一。 首先,香型对白酒品质的影响是不…

Qt中的 tableView 设置 二进制 十六进制 序号表头

二 进制序号 因为QTableView的垂直表头并不支持使用委托来自定义。 相反&#xff0c;可以通过将自定义的QWidget作为QHeaderView的标签来实现这一目标。 代码&#xff1a; #include <QApplication> #include <QMainWindow> #include <QVBoxLayout> #include …

【管理咨询宝藏85】MBB物流战略规划及实施落地项目报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏85】MBB物流战略规划及实施落地项目报告 【格式】PDF版本 【关键词】战略规划、MBB、麦肯锡 【核心观点】 - 全面进行小件包裹业务实施方案的细…

编程基础“四大件”

基础四大件包括&#xff1a;数据结构和算法,计算机网络,操作系统,设计模式 这跟学什么编程语言,后续从事什么编程方向均无关&#xff0c;只要做编程开发&#xff0c;这四个计算机基础就无法避开。可以这么说&#xff0c;这基础四大件真的比编程语言重要&#xff01;&#xff0…

如何定制企业PIA问卷?

前言 大家好&#xff0c;欢迎关注用九智汇。 作为国内专业的数据合规与隐私保护工具科技服务商&#xff0c;我们近几年为多个客户提供了企业级数据合规与隐私保护体系的系统落地解决方案&#xff0c;这些客户覆盖了智能网联汽车、互联网医疗、智能硬件、金融、新零售等多个行…

【Vue】常见的七大属性(描述+案例)

一、前言 最近&#xff0c;因为项目需要自己就去学习了一下Vue的相关知识&#xff0c;自己花了几天&#xff0c;结合官方文档和相应的视频学习了一下Vue,了解了Vue大概的一些属性&#xff0c;方法&#xff0c;特点等。接下来博主会将自己学习的相关内容通过博客的形式进行记录…

基于卷积神经网络的垃圾图像分类系统研究与实现

1.摘要 垃圾分类作为资源回收利用的重要环节之一, 可以有效地提高资源回收利用效率, 进一步减轻环境污染带来的危害. 随着现代工业逐步智能化, 传统的图像分类算法已经不能满足垃圾分拣设备的要求. 本文提出一种基于卷积神经网络的垃圾图像分类模型 (Garbage Classification Ne…

javaWeb项目-社区医院管理服务系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Java技术 Java语…

微博评论爬取

import requests import csv# 打开CSV文件以写入数据 f open(data.csv, modea, encodingutf-8-sig, newline) csv_writer csv.DictWriter(f, fieldnames[昵称, 性别, 归属地, 内容]) csv_writer.writeheader()# 定义一个函数用于获取评论内容 def GetContent(max_id):# 设置请…

吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.3-13.5

目录 第 8 周 13、 聚类(Clustering)13.3 优化目标13.4 随机初始化13.5 选择聚类数 第 8 周 13、 聚类(Clustering) 13.3 优化目标 K-均值最小化问题&#xff0c;是要最小化所有的数据点与其所关联的聚类中心点之间的距离之和&#xff0c;因此 K-均值的代价函数&#xff08;又…

ShardingSphere-JDBC快速入门

ShardingSphere-JDBC读写分离快速入门 一、ShardingSphere-JDBC 读写分离1.创建springboot程序1.1 添加依赖1.2 java代码1.3 配置 2.测试 二、ShardingSphere-JDBC垂直分片1.创建springboot程序1.1 导入依赖1.2 java代码1.3 配置 2.测试 三、ShardingSphere-JDBC水平分片1.创建…

第二证券|三大利好突袭!港股,这次不一样?

密布利好突袭香港。 港股的接连上攻&#xff0c;让商场兴奋不已。行情转好的背后&#xff0c;有三大利好支撑&#xff1a; 一是&#xff0c;香港金融办理局&#xff08;以下简称“香港金管局”&#xff09;正密布投进流动性&#xff0c;4月22日、23日&#xff0c;分别经过贴现…

【leetcode面试经典150题】72. 从前序与中序遍历序列构造二叉树(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

uniapp 引用组件后 不起作用 无效果 不显示

根据uniapp官方文档easycom组件规范 只要组件安装在项目的components目录下或uni_modules目录下&#xff0c;并符合components/组件名称/组件名称.(vue|uvue)目录结构&#xff08;注意&#xff1a;当同时存在vue和uvue时&#xff0c;uni-app 项目优先使用 vue 文件&#xff0c;…

vue3组件封装系列-表格及分页

第二弹来了&#xff0c;不知道有多少人是看过我的第一篇文章的&#xff0c;今天本来是没想更新的&#xff0c;但是现在项目正在验收期准备上线&#xff0c;闲着还不如来发发文。虽然这两天可能会高产&#xff0c;下一次高产就不知道是什么时候了。话不多说&#xff0c;先上图。…

python实现钉钉通讯录导出Excel表

Python工具开源专栏 Py0004 python实现钉钉通讯录导出Excel表 Python工具开源专栏前言目录结构部分演示完整代码已在GitHub上开源 前言 需求来源于公司&#xff0c;需要将钉钉通讯录以Excel表的形式导出到本地&#xff0c;方便定期备份。导出的Excel需要处理钉钉用户兼任多部门…

【计算机毕业设计】药品销售系统产品功能介绍——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…