前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Linux第一个小程序~~~进度条

Linux第一个小程序~~~进度条

作者头像
阑梦清川
发布2025-02-24 13:40:12
发布2025-02-24 13:40:12
510
举报
文章被收录于专栏:学习成长指南学习成长指南

1.操作过程

我们这个是实现一个进度条的程序,类似于下面的这个样子,但是效果肯定没有下面这个高级哈

我们的实现效果是这个样子的(动态的哈):

我们这个需要去进行一个文件系统的搭建,类似于我们进行这个C语言,C加加学习的时候这个既包含头文件,又包含源文件,还包含测试文件这样的多个文件组成的文件系统。使用我们之前介绍的这个makefile自动化构建工具,以及这个依赖关系和依赖方法等等加以运用;

进度条的英文我们翻译为processbar,我们创建这个源文件头文件的时候,都是以这个进行命名的,夏敏简单介绍一下这个操作的方法,顺便介绍一下这个缓冲区和换行的概念:

1.1创建文件夹

我们先去创建一个processbar的文件夹,这个文件夹就是我们将来要写程序的地方,创建完成这个文件夹之后,我们就进入这个对应的目录里面去;

1.2创建源文件和头文件

这个小程序里面,我们需要创建两个源文件,一个头文件,两个原文件就是main.c和processbar.c文件,一个头文件就是processbar.h文件;

现阶段这个processbar源文件用不上,所以里面没有填如任何内容,头文件就是包含以下这个标准库,以及这个prabma once是为了防止被重复的包含;

在main.c文件里面,我们首先就是包含这个头文件;

1.3自动化构建makefile

我们创建一个makefile文件,这个里面洗的内容就是这个依赖关系和这个依赖方法,以及这个文件的清除处理;

就是利用这个processbar文件依赖于两个源文件建立这个关系,为什么没有写这个头文件,因为我们的头文件就在当前的目录下面,而且我们的原文件里面也是包含了这个头文件的,这个时候不需要在依赖关系里面写出来这个头文件,编译的时候他会被自动的调用;

clean就是对于生成的文件进行清除;

1.4验证测试缓冲区的存在

我们的main.c文件里面,这个就是简单的打印一下这个hello world这句话,sleep是休眠两秒钟,这个sleep需要包含对应的头文件,就是上面写的这个unistd.h文件;

我们输入make就是运行这个processbar文件,就可以查看这个休眠的过程以及结果;

./processbar就是运行这个文件的指令,我们通过这个指令就可以查看这个休眠的过程;

下面我们把这个代码里面的\n去掉,观察这个效果:

发现是先去休眠两秒,再打印出来的结果,这个实际上就是可以证明缓冲区的存在的,因为这个程序的代码在执行的时候一定是先去执行hello world命令,再次休眠的,但是这个结果显示的却是先是休眠,这个就说明我们的hello world一定位于某一个地方,这个地方就是缓冲区;

这个缓冲区的存在也是可以验证的,使用fflush指令刷新这个标准输出流,这样的话当这个程序执行到这个步骤的时候,就会直接把这个在缓冲区里面的数据刷新到显示器上面去;

1.5倒计时的设置

这个时候我们还是在原来的基础上面对于我们的main.c文件进行修改哦,我们想要按照10 9 8 76 这样的方式进行这个时间的倒计时,\r是为了让下一个显示的数字覆盖掉上一个数字.%-2d表示这个数字的打印时候,是左对齐,而且这个数字的长度是2,每一次都要进行刷新;

这个实际上就是%d的话,会显示出来这个10 90 80 70 这个样子的,因为我们后面的那个0没有办法被覆盖掉,%2d就会让这个打印的数字长度为2,而且是靠右边显示,这个样子打印 的话这个结果看着不美观,我们加上-之后,这个结果就会靠左边显示,这个就是优化的过程;

1.6宏的定义与函数声明

这个里面为啥呢么要进行声明,因为这个是我们实现这个进度条的函数接口,为什么进行这个宏的定义,我们定义的这个宏是旋转符号和这个加载时候的这个符号显示进度,都是为了我们后续的这个函数的书写做铺垫的,其实这个是函数里面使用,我们才回去这个头文件里面进行定义,但是我的这个是博客,是按照理解顺序写的,这个就是相反的顺序,为后面做一下铺垫;

下面的这个就是头文件里面的函数的声明和宏的定义:

1.7炫酷的旋转符号

其实也不是很炫酷,只是为了凸显这个过程里面加载的这个过程:

下面的这个就是processbar.c文件里面的部分内容,我们的这个label数组里面的就是这个旋转过程里面涉及到的所有的动画,就是这几个符号之间的来回切换;

1.8进度条的实现

这个main.c函数里面只需要去实现这个生成进度条函数调用就可以了,这个进度条函数在processbar文件里面进行实现功能的;

processbar.c文件里面的函数功能的实现:

这个里面的呢内容很多哈,lable就是我们的那个动图的展示过程里面的所有的元素,这个加载过程也会涉及到这个休眠,但是使用sleep函数的话这个休眠时间就会太长,我们这个里面使用的就是usleep函数,单位是微秒,sleep是秒,相差1000000倍呢;

这个lable数组里面的元素要被不停的打印,这个时候五个元素的话就会越界,我们需要计算这个数组的长度把cnt模上len长度作为这个下标,规避越界的风险;

printf里面的第二个参数后面加上了两个%%,这个就是为了显示出来这个%的效果,否则这个加载进度上面先是的就是这个1 2 3 4………………,加上之后就是1% 2% 3% 4% ………………;

最后我们直接在这个main.c函数里面调用这个方法就可以了:

这个只是最基础的版本,我们可以有多个方法实现升级,感兴趣的小伙伴可以自行尝试,有问题也可以私信我欧~~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.操作过程
    • 1.1创建文件夹
    • 1.2创建源文件和头文件
    • 1.3自动化构建makefile
    • 1.4验证测试缓冲区的存在
    • 1.5倒计时的设置
    • 1.6宏的定义与函数声明
    • 1.7炫酷的旋转符号
    • 1.8进度条的实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档