【Linux】7:第一个系统程序-进度条
目录一、补充回车和换行知识二行缓冲区三、倒计时程序四、进度条程序4.1 version14.1.1 makefile文件4.1.2 process.h文件4.1.3 process.c文件4.1.4 main.c文件4.1.5 运行4.2 version24.2.1 makefile文件4.2.2 process.h文件4.2.3 process.c文件4.2.4 main.c文件4.2.5 运行一、补充回车和换行知识换行指的是从当前这一行到下一行的当前位置如下所示回车指的是到本行的开头位置如下所示回车换行如下所示换行是\n,回车是\r.\r\n表示回车换行。在我们写的c语言代码中的\n它指的是\r\n也就是回车换行编译器处理了一下。二行缓冲区我们来看如下代码我们先打印一个字符串然后在睡眠3秒执行之后我们发现会先输出一个字符串然后等待3秒之后程序就结束了。现在我们将\n给去掉然后运行如下所示我们发现运行之后是先睡眠3秒然后在打印出hello world的这是为什么呢我们写的程序应该是顺序执行的应该是先打印出hello world然后睡眠3秒结束程序的。这是因为我们打印hello world是先被输出到缓冲区中了然后再次睡眠3秒结束程序当程序结束之后会自动刷新缓冲区将缓冲区的内容输入到屏幕。那为什么第一个程序会先打印出hello world呢这是因为\n会刷新缓冲区。如果想要让不带\n的字符串立马刷新到屏幕呢我们可以使用fflush来刷新输出缓冲区如下所示三、倒计时程序四、进度条程序4.1 version14.1.1 makefile文件4.1.2 process.h文件1 #pragma once 2 3 #includestdio.h 4 5 void process_v1();4.1.3 process.c文件1 #include process.h 2 #includestring.h 3 #includeunistd.h 4 5 #define NUM 101 6 #define STYLE # 7 8 void process_v1() 9 { 10 char buffer[NUM]; 11 memset(buffer,0,sizeof(buffer)); 12 const char* lable|/-\\; 13 int lenstrlen(lable); 14 int cnt0; 15 while(cnt100) 16 { 17 printf([%-100s][%d%%][%c]\r,buffer,cnt,lable[cnt%len]); 18 fflush(stdout); 19 buffer[cnt]STYLE; 20 usleep(10000); 21 cnt; 22 } 23 printf(\n); 24 }4.1.4 main.c文件1 #include process.h 2 3 int main() 4 { 5 process_v1(); 6 return 0; 7 } ~4.1.5 运行4.2 version2在上面的我们进度条的代码是无法使用的例如我们下载一个文件我们是运行下载程序还是进度条程序呢一个进度条是需要结合场景的一边下载一边更新进度条。4.2.1 makefile文件4.2.2 process.h文件1 #pragma once 2 3 #includestdio.h 4 5 void FlushProcess(double total,double current); 6 void process_v1();4.2.3 process.c文件1 #include process.h 2 #includestring.h 3 #includeunistd.h 4 5 #define NUM 101 6 #define STYLE # 7 8 //version2 9 void FlushProcess(double total,double current) 10 { 11 char buffer[NUM]; 12 memset(buffer,0,sizeof(buffer)); 13 const char* label|/-\\; 14 int lenstrlen(label); 15 static int cnt0; 16 //不需要自己循环循环代码在下载里面 17 //填充# 18 int num(int)(current*100/total); 19 for(int i0;inum;i) 20 { 21 buffer[i]STYLE; 22 } 23 double ratecurrent/total; 24 cnt%len; 25 printf([%-100s][%.1lf%%][%c]\r,buffer,rate*100,label[cnt]); 26 cnt; 27 fflush(stdout); 28 } 29 //version1 30 void process_v1() 31 { 32 char buffer[NUM]; 33 memset(buffer,0,sizeof(buffer)); 34 const char* lable|/-\\; 35 int lenstrlen(lable); 36 int cnt0; 37 while(cnt100) 38 { 39 printf([%-100s][%d%%][%c]\r,buffer,cnt,lable[cnt%len]); 40 fflush(stdout); 41 buffer[cnt]STYLE; 42 usleep(10000); 43 cnt; 44 } 45 printf(\n); 46 }4.2.4 main.c文件1 #include process.h 2 #include stdio.h 3 #include unistd.h 4 double total1024.0; 5 double speed1.0; 6 7 void DownLoad() 8 { 9 double current0; 10 while(currenttotal) 11 { 12 FlushProcess(total,current); 13 //下载代码 14 usleep(3000); //充当下载数据 15 currentspeed; 16 } 17 printf(\ndownload %.2lfMB Done\n,current); 18 } 19 int main() 20 { 21 DownLoad(); //下载软件1 22 DownLoad(); //下载软件2 23 DownLoad(); //下载软件3 24 DownLoad();//下载软件4 25 DownLoad();//下载软件5 26 return 0; 27 }4.2.5 运行

相关新闻

PyTorch 1.8+ 图像频域分析实战:GPU加速与梯度回传的3个关键步骤

PyTorch 1.8+ 图像频域分析实战:GPU加速与梯度回传的3个关键步骤

PyTorch 1.8 图像频域分析实战:GPU加速与梯度回传的3个关键步骤频域分析在计算机视觉领域扮演着重要角色,而PyTorch 1.8版本带来的torch.fft模块革新了深度学习中的频域操作方式。本文将深入探讨如何利用GPU加速和自动微分特性,将频域处理无缝…

2026/7/5 3:37:04 阅读更多 →
自动售货机的远程监控系统,原来这么有用~YH

自动售货机的远程监控系统,原来这么有用~YH

━━━━ 远程监控能做什么远程监控是自动售货机智能化的重要体现。通过后台系统,在手机上就能看到每台机器的运行状态,不用每天都跑到点位去检查。━━━━━ 核心监控功能功能一:实时状态查看打开手机后台,能看到每台机器的实时…

2026/7/5 3:37:04 阅读更多 →
PW7127+PW4406A*4三串锂电池充放电保护板方案,持续6A,过流保护14A,带NTC过温

PW7127+PW4406A*4三串锂电池充放电保护板方案,持续6A,过流保护14A,带NTC过温

概述 本保护板采用平芯微自研PW7126保护芯片,搭配PW4406A 4 MOS管,为3S(三节串联锂电池组11.1V,12.6V满充)锂电池组提供完整的过充、过放、过流及短路保护。持续放电电流6A,过流保护阈值约7A。集成PW2213均…

2026/7/5 3:35:03 阅读更多 →

最新新闻

Ketcher架构深度解析:基于Web的化学结构编辑器技术实现与工程实践

Ketcher架构深度解析:基于Web的化学结构编辑器技术实现与工程实践

Ketcher架构深度解析:基于Web的化学结构编辑器技术实现与工程实践 【免费下载链接】ketcher Web-based molecule sketcher 项目地址: https://gitcode.com/gh_mirrors/ke/ketcher Ketcher作为一款现代化的Web化学结构编辑器,其技术架构体现了对复…

2026/7/5 4:33:16 阅读更多 →
抖店AI标题优化怎么用标题违规和低质标题怎么改

抖店AI标题优化怎么用标题违规和低质标题怎么改

抖店AI标题优化怎么用?标题违规和低质标题怎么改 抖店商品标题写不好,会影响审核、搜索理解和买家点击。很多商家从 1688 搬标题时,原标题里带批发词、品牌词、极限词、无关热词,直接上架容易违规,也不一定适合抖店买家…

2026/7/5 4:29:15 阅读更多 →
如何3分钟完成通达信缠论插件部署:终极自动化分析指南

如何3分钟完成通达信缠论插件部署:终极自动化分析指南

如何3分钟完成通达信缠论插件部署:终极自动化分析指南 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为复杂的缠论分析而烦恼吗?面对繁琐的笔段划分和中枢识别,传…

2026/7/5 4:27:15 阅读更多 →
接口自动化测试项目框架详解

接口自动化测试项目框架详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选…

2026/7/5 4:25:15 阅读更多 →
单片机IWIP 原子云实验

单片机IWIP 原子云实验

单片机 :STM32F407 开发板:DMF407电机开发板 平台:keil V5.31HSE 为8MHZ HSI为16MHZ主函数int main(void) {HAL_Init(); /* 初始化HAL库 */sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */delay_init…

2026/7/5 4:25:15 阅读更多 →
Nano Banana部署Gemini 2.5 Flash:ARM+NPU边缘多模态推理实战指南

Nano Banana部署Gemini 2.5 Flash:ARM+NPU边缘多模态推理实战指南

1. 项目概述:这不是一个“升级包”,而是一套可落地的嵌入式AI推理工作流 你手头有一块 Nano Banana 开发板——它不是树莓派,也不是 Jetson Nano,而是基于全志 H616 芯片、带双千兆网口、4GB LPDDR4、支持 PCIe 2.0 x1 的国产小钢…

2026/7/5 4:23:15 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻