3.4、Linux小程序:进度条

个人主页:Lei宝啊 

愿所有美好如期而遇


目录

回车与换行的概念和区别

行缓冲区概念

进度条代码

version1

version2

version3


回车与换行的概念和区别

换行\n,回车\r

似乎无需多言

行缓冲区概念

这里我们通过例子来简单理解即可,深入理解以后再说

运行结果是什么呢?

先暂停3秒,然后全部输出。

这是因为缓冲区是按照行进行刷新的,在换行的时候会将该行数据刷新到屏幕上,在程序运行结束时会将缓冲区的数据全部刷新,在缓冲区满时也会刷新。

而我们的代码刻意地没有加换行符。

所以我们需要定期刷新,就要用到fflush函数,传stdout,即标准输出,输出到显示屏上。

这一次是打印一次,然后休眠一秒。 

进度条代码

version1

const char *str = "-|\\/";void process()
{char arr[NUM] = {0};arr[0] = SYMBOL;int cnt = 1;while(cnt <= 100){printf("[%-100s][%3d%%][%c]\r",arr,cnt,str[cnt%4]);fflush(stdout);Sleep(100);arr[cnt++] = SYMBOL;}printf("\n");
}

version2

#define NUM 104
#define SYMBOL '#'const char *str = "-|\\/";
#define DownLoadSize (1024*1024*1024) void download()
{srand((unsigned int)time(NULL));double _rate = 0;int total = DownLoadSize;while(total){int speed = rand() % (1024 * 1024) * 100;total -= speed;if(total < 0){total = 0;}_rate = (DownLoadSize - total) * 1.0  / DownLoadSize * 100;process_flush(_rate);}printf("\n");}char arr[NUM] = {0};
void process_flush(double rate)
{static int cnt = 0;int temp = (int)rate;arr[temp] = SYMBOL;printf("[%-100s][%.1lf%%][%c]\r",arr,rate,str[cnt%4]);fflush(stdout);Sleep(100);cnt++;cnt %= 4;
}

写个主函数调用即可,但是别忘了修改后要make

version3

相较与version2,做了颜色和符号改变

  4 #define SYMBOL ' '51 char arr[NUM] = {0};52 void process_flush(double rate)53 {54     static int cnt = 0;55 56     int temp = (int)rate;57     if(temp < 100)58         arr[temp] = SYMBOL;59     60     //printf("[\033[0;35;47m%-100s\033[0m][%.1lf%%][%c]\r",arr,rate,str[cnt%4]);61     printf("[\033[0;47m%-100s\033[0m][%.1lf%%][%c]\r","",rate,str[cnt%4]);62     printf("[\033[0;45m%-s\033[0m\r",arr);63 64     fflush(stdout);65     usleep(100000);66 67     cnt++;68     cnt %= 4;69 }

效果如下:

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

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

相关文章

wx 小程序不打开调试模式无法获取数据

问题开始 最近学习小程序&#xff0c;发布了一个体验版的小程序&#xff0c;发现正常扫码进入后接口数据是无法访问的。也就是原始数据,不过开启调试模式后,数据又一切正常&#xff0c;但是总不能让每个人都开启调试模式用吧&#xff0c;终于查阅资料后找到了解决问题的办法 …

10 索引优化与查询优化

文章目录 索引失效案例关联查询优化对于左外连接对于内连接JOIN语句原理简单嵌套循环连接SNLJ索引嵌套循环连接INLJ块嵌套循环连接BNLJHash Join 子查询优化排序优化filesort算法&#xff1a;双路排序和单路排序 分组优化分页优化优先考虑覆盖索引索引下推ICP使用条件 其他查询…

最新、最全、最详细的 K8S 学习笔记总结

Kubernetes就是一个编排容器的工具&#xff0c;一个可以管理应用全生命周期的工具&#xff0c;从创建应用&#xff0c;应用的部署&#xff0c;应用提供服务&#xff0c;扩容缩容应用&#xff0c;应用更新&#xff0c;都非常的方便&#xff0c;而且可以做到故障自愈。 K8S的前景…

笔记50:正则表达式入门宝典

引自&#xff1a;正则表达式是什么? - 知乎 中“龙吟九野”所写的一个回答&#xff0c;个人感觉看完之后如同醍醐灌顶&#xff0c;查了很多资料都没有这篇文章写的基础和通透&#xff0c;感觉是正则表达式扫盲好文&#xff0c;所以搬运一下&#xff0c;侵权删&#xff0c;感谢…

面向萌新的数学建模入门指南

时间飞逝&#xff0c;我的大一建模生涯也告一段落。感谢建模路上帮助过我的学长和学姐们&#xff0c;滴水之恩当涌泉相报&#xff0c;写下这篇感想&#xff0c;希望可以给学弟学妹们一丝启发&#xff0c;也就完成我的想法了。拙劣的文笔&#xff0c;也不知道写些啥&#xff0c;…

Hadoop知识点全面总结

文章目录 什么是HadoopHadoop发行版介绍Hadoop版本演变历史Hadoop3.x的细节优化Hadoop三大核心组件介绍HDFS体系结构NameNode介绍总结 SecondaryNameNode介绍DataNode介绍DataNode总结 MapReduce介绍分布式计算介绍MapReduce原理剖析MapReduce之Map阶段MapReduce之Reduce阶段 实…

MySQL的event的使用方法

MySQL的event的使用方法 一、事件定时策略 1、查看event事件开启状态 SHOW VARIABLES LIKE event_scheduler;如图&#xff0c;Value值 ON&#xff1a;打开&#xff0c;OFF&#xff1a;关闭。 2、设置event事件打开 SET GLOBAL event_scheduler ON;如果MySQL重启了&#x…

vSLAM中IMU预积分的作用--以惯性导航的角度分析

作为一个学过一点惯导的工程师&#xff0c;在初次接触视觉slam方向时&#xff0c;最感兴趣的就是IMU预积分了。但为什么要用这个预积分&#xff0c;在看了很多材料和书后&#xff0c;还是感觉模模糊糊&#xff0c;云里雾里。 在接触了vSLAM的更多内容后&#xff0c;站在历史研究…

极简web集成 rtsp/rtmp免插件播放,web rtsp/rtmp推流方案

一直有客户要求在Web上集成rtsp/rtmp播放和web推流功能,测试对比各种流服务平台和播放器后&#xff0c;发现在github的ovsyunlive不管是延时&#xff0c;便捷和集成易用性都是非常好&#xff0c;还是看效果吧&#xff0c;直接下载测试如下&#xff1a; github 搜ovsyunlive下载…

STM32 IAP应用开发--bootloader升级程序

STM32 IAP应用开发--bootloader升级程序 Chapter1 STM32 IAP应用开发——通过串口/RS485实现固件升级&#xff08;方式2&#xff09;前言什么是IAP&#xff1f;什么是BootLoader&#xff1f; 方案介绍&#xff1a;1&#xff09;bootloader部分&#xff1a;2&#xff09;APP部分…

纷享销客获评中小企业数字化转型优质服务商

近日&#xff0c;纷享销客成功入选长沙市工信局评定的【中小企业数字化转型优质服务商】&#xff0c;专业服务实力得到官方认可&#xff01; 今年6月&#xff0c;财政部、工信部联合印发《关于开展中小企业数字化转型城市试点工作的通知》&#xff0c;长沙市成功入选首批中小企…

程序员笔记本电脑选 windows 还是 MAC

计算机选择是每个进入 IT 行业同学的第一个重要选择&#xff0c;那么你是怎么选择的呢&#xff1f; 选择操作系统&#xff08;Windows还是macOS&#xff09;取决于程序员的需求、偏好和工作流程。每个操作系统都有其优点和缺点&#xff0c;下面将分别讨论它们&#xff0c;以帮助…

RK3568驱动指南|第七篇 设备树-第61章 实例分析:pinctrl

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

Redis注解式开发结合SSM项目使用与Quartz框架介绍以及击穿、穿透、雪崩问题解决

目录 一、SSM项目整合Redis 1.1 导入pom依赖 1.2 spring-redis.xml 1.3 spring上下文配置 二、Redis注解式开发 2.1 Cacheable 注解 2.2 自定义策略 2.3 CachePut 注解 三、Redis中缓冲、击穿、穿透、雪崩问题解决 3.1 缓冲问题 —— Quartz 框架 3.2 常见的三种问题…

Git查询某次提交属于哪个分支

在Android studio&#xff08;JetBrains系列也类似&#xff09;左下角&#xff0c;可以看到所有提交信息。 选中某一次提交信息&#xff0c;右键&#xff0c;选择“Copy Revision Number”&#xff0c;如下图&#xff1a; 打开Android studio的Terminal&#xff0c;输入git b…

【广州华锐互动】3D全景虚拟旅游在文旅行业的应用场景

随着科技的不断发展&#xff0c;3D全景虚拟旅游正在成为一种新兴的旅游体验方式&#xff0c;它可以帮助旅游者更加深入地了解旅游信息&#xff0c;提升旅游体验。下面我们将详细介绍3D全景虚拟旅游可以应用于哪些场景。 一、旅游规划 3D全景虚拟旅游可以帮助旅游者更加直观地进…

SQL数据库使用方法

首先打开sqlite3.exe所在文件夹&#xff0c;如图1 图1 在文件夹路径中将路径改为cmd&#xff0c;如图2所示 图2 在弹出的cmd窗口中输入如图3所示。 图3 sqlite3 tichiceliang.db 其中tichiceliang是数据库名称。然后按enter&#xff0c;再在cmd中输入.table,可以看到文件夹目…

PC9502双节锂电池充电管理芯片高精度外围元件少SOP8封装

■ 产品概述 PC9502 系列是一款双节锂电池充电管理芯片。 该芯片 包含了充电状态检测、充电过程、温度检测等&#xff0c;内部还集成 一个高精度的基准电压模块&#xff0c;此芯片采用 SOP-8 封装。 PC9502 充电包含三种模式&#xff1a;预充电&#xff0c;恒流充电&#x…

Cassandra介绍(二)

1.8. 数据 存储 &#xff08; CommitLog、MemTable、SSTable &#xff09; 写请求分别到 CommitLog 和 MemTable, 并且 MemTable 的数据会刷写到磁盘 SSTable 上. 除 了写数据,还有索引也会保存到磁盘上. 先将数据写到磁盘中的 commitlog&#xff0c;同时追加到中内存中的数据…