进度条(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 重译)(六)
269 2
“Java 8新特性:Lambda表达式与函数引用的详细之道“
“Java 8新特性:Lambda表达式与函数引用的详细之道“
232 0
|
机器学习/深度学习 编解码 算法
学习:Mobile-Unet网络的肺结节图像分割方法
学习:Mobile-Unet网络的肺结节图像分割方法
1173 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点
739 0
|
21天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
32793 128
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
17天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
6972 20
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
|
15天前
|
人工智能 机器人 Linux
OpenClaw(Clawdbot、Moltbot)汉化版部署教程指南(零门槛)
OpenClaw作为2026年GitHub上增长最快的开源项目之一,一周内Stars从7800飙升至12万+,其核心优势在于打破传统聊天机器人的局限,能真正执行读写文件、运行脚本、浏览器自动化等实操任务。但原版全英文界面对中文用户存在上手门槛,汉化版通过覆盖命令行(CLI)与网页控制台(Dashboard)核心模块,解决了语言障碍,同时保持与官方版本的实时同步,确保新功能最快1小时内可用。本文将详细拆解汉化版OpenClaw的搭建流程,涵盖本地安装、Docker部署、服务器远程访问等场景,同时提供环境适配、问题排查与国内应用集成方案,助力中文用户高效搭建专属AI助手。
4935 12
|
18天前
|
人工智能 机器人 Linux
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI智能体,支持飞书等多平台对接。本教程手把手教你Linux下部署,实现数据私有、系统控制、网页浏览与代码编写,全程保姆级操作,240字内搞定专属AI助手搭建!
5759 22
保姆级 OpenClaw (原 Clawdbot)飞书对接教程 手把手教你搭建 AI 助手

热门文章

最新文章