进度条(Linux)

简介: 进度条(Linux)

进度条


回车\r&&换行\n


回车,换行是两个不同的概念

回车表示光标回到所在行的行首;换行表示从光标所在行直接跳到下一行,相对位置不发生变化


行缓冲区概念


观察下面两段代码执行的结果


1 #include<stdio.h>
  2 #include<unistd.h>                                                                                                                                                        
  3 int main()
  4 {
  5   int i =10;
  6   while(i)
  7   {
  8     printf("剩余时间:%2d\r",i);
  9     i--;
 10     sleep(1);
 11   }
 12   return 0;
 13 }


070f83c32224e83ea7b2f2e2b7a63a52_569b4c37ca8843de8ff15e4d802b6e69.png


1 #include<stdio.h>
  2 #include<unistd.h>                                                                                                                                                        
  3 int main()
  4 {
  5   int i =10;
  6   while(i)
  7   {
  8     printf("剩余时间:%2d\n",i);
  9     i--;
 10     sleep(1);
 11   }
 12   return 0;
 13 }


50435f03788c3b22791de4b6a8b06009_4125f053494a41df92e97ec956ba6240.png


两段代码唯一的区别就是输出打印时第一个是回车打印,第二个时是换行打印结果却相差很大,原因便是:两种打印的缓冲区不同,第一个是打印到缓冲区,第二个是打印到行缓冲区,缓冲区的区别之后再进行学习,这里只作为了解


进度条代码


image.png


首先一个概念,凡是能显示到显示器上的都是字符

根据上面的学习,在进度条的打印中一定是使用回车打印,不过呢,上面的代码还是有些问题的。进度条肯定是在原地打印,总不能随着进度的加载,打印也冲页首打印到页尾。所以,在每次打印之后重新刷新输出,便可解决这个问题


代码分为四个文件:Makefile,源文件,头文件,进度条文件

头文件


1 #pragma once 
  2 #include<stdio.h>
  3 #include<string.h>
  4 #include<unistd.h>
  5 
  6 #define NUM1 5
  7 #define NUM2 100                                                                                                                                                          
  8 
  9 extern void Process();//函数声明


源文件


1 #include"Process.h"
  2 int main()
  3 {
  4   Process();                                                                                                                                                              
  5   return 0;
  6 }


Makefile


1 Process:test.c Process.c
  2   gcc test.c Process.c -o Process                                                                                                                                         
  3 .PHONY:clean
  4   rm -f Process


进度条文件


1 #include"Process.h"
  2 char style[NUM1]={'-','.','#','>','+'};
  3 void Process()
  4 {
  5   int i=0;
  6   char ch[NUM2];
  7   memset(ch,'\0',sizeof(ch));
  8   //加载符号
  9   const char*label="|\\_/";
 10 
 11   while(i<=100)
 12   {
 13     printf("[%-100s][%d%%][%c]\r",ch,i,label[i%4]);                                                                                                                       
 14     fflush(stdout);
 15     ch[i++]=style[2];
 16     //休眠50000毫秒
 17     usleep(50000);
 18 
 19   }
 20 
 21   printf("\n");
 22 }

a2bc81b82bc6ea46f321f65bb5f0080e_758429f84b8544a18707a02d142c14a9.png


目录
相关文章
|
PyTorch 算法框架/工具 Android开发
PyTorch 深度学习(GPT 重译)(六)(4)
PyTorch 深度学习(GPT 重译)(六)
283 2
“Java 8新特性:Lambda表达式与函数引用的详细之道“
“Java 8新特性:Lambda表达式与函数引用的详细之道“
242 0
|
机器学习/深度学习 编解码 算法
学习:Mobile-Unet网络的肺结节图像分割方法
学习:Mobile-Unet网络的肺结节图像分割方法
1212 0
学习:Mobile-Unet网络的肺结节图像分割方法
|
SQL 分布式计算 流计算
Flink计算PV,UV的案例及问题分析
PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。 UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。 一个UV可以用很多PV,一个PV也只能对应一个IP 没有这些数据的支持,意味着你不知道产品的发展情况,用户获取成本,UV,PV,注册转化率;没有这些数据做参考,你不会知道接下来提供什么建议给领导采纳,也推测不出领导为啥烦忧,那么就么有任何表现的机会。 举两个UV计算的场景: 1. 实时计算当天零点起,到当前时间的uv。 2. 实时计算当天每个小时的UV。0点
764 0
|
5天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
4042 12
|
16天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
11629 136
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
4天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
1415 7
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
6天前
|
人工智能 自然语言处理 数据挖掘
零基础30分钟搞定 Claude Code,这一步90%的人直接跳过了
本文直击Claude Code使用痛点,提供零基础30分钟上手指南:强调必须配置“工作上下文”(about-me.md+anti-ai-style.md)、采用Cowork/Code模式、建立标准文件结构、用提问式提示词驱动AI理解→规划→执行。附可复制模板与真实项目启动法,助你将Claude从聊天工具升级为高效执行系统。

热门文章

最新文章