进度条(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


目录
相关文章
|
6月前
|
小程序 NoSQL 调度
跑腿小程序配送费到底怎么定?低价真的能带来订单吗?
本文剖析跑腿小程序配送费设计误区,指出“低价≠多单”,揭示其本质是成本控制、调度效率与利益分配的综合模型。详解阶梯计价、动态加费、数据库设计及防并发方案,强调以履约稳定和骑手收益平衡替代盲目压价。(239字)
|
5月前
|
存储 安全 数据管理
什么是冷数据?阿里云低成本冷数据存储解决方案
冷数据指长期保存、访问极少但具合规与历史价值的数据(如旧合同、备份等)。阿里云OSS提供标准/低频/归档/冷归档/深度冷归档五级存储,结合生命周期自动分层、数据湖分析及存算分离架构,大幅降本并保障安全合规。
962 5
|
人工智能
|
存储 监控 数据库
【计算机三级数据库技术】第10章 数据库运行维护与优化--附思维导图
介绍了数据库运行维护和性能优化的基础知识,包括数据库的转储与恢复、安全性与完整性控制、性能监控与改进、重组与重构,以及数据库存储空间管理。
398 1
|
BI
SAP BP主数据相关的表
注意点:最新地址编号取 BUT021_FS
514 0
|
算法 C++
C++ 基础复习系列2(打印图形类(循环)经典问题类)
C++ 基础复习系列2(打印图形类(循环)经典问题类)
C++ 基础复习系列2(打印图形类(循环)经典问题类)
|
5天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
1696 6
|
9天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1624 1
|
6天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
741 1

热门文章

最新文章