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

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函数里面调用这个方法就可以了:

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

  • 34
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
小程序的audio组件可以让开发者方便地实现音频播放的功能。进度条是音频播放界面中经常用到的一种控件。在小程序中使用audio进度条可以让用户更加清晰地了解音频的播放进度,从而更好地掌握音频的播放状态。 实现audio进度条的方法比较简单。在audio组件中,可以使用onTimeUpdate事件来监听音频的播放进度。当音频播放时,该事件会不断触发,并携带当前的播放进度信息。开发者可以通过计算当前的播放进度与总时长的比值,得出当前进度条的位置,并动态更新进度条的UI。另外,如果需要实现进度条的拖动功能,也可以在进度条组件上设置bindchange事件,来监听用户对进度条的操作,并根据操作更新音频播放进度。 在实现audio进度条时,需要注意的一些点包括:首先,由于音频播放进度是不断变化的,因此需要在不断更新进度条UI的同时,尽量减少不必要的UI渲染操作,以提高程序的运行效率。其次,在用户暂停或拖动进度条时需要及时暂停或调整音频的播放进度,以保证播放的准确性。最后,在设计进度条的样式时需要注意与整个应用程序的UI风格保持一致,以提高用户的使用体验。 总之,通过使用小程序的audio组件,并结合进度条控件的应用,能够为用户提供一个清晰、直观的音频播放体验,同时也有助于开发者更好地掌握和管理音频的播放进度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值