Linux新手小程序——进度条

前言

目录

前言


需要先了解        1.\r\n
                          2.缓冲区

一.理解字符的含义:

        学习c语言时,我们可以粗略把字符分为可显字符控制字符.

        在按回车换到下一行开始的操作时,实际上是进行了两个操作:1.让光标跳到下一行(只是垂直向下,这一步的操作称为换行).2.让光标跳到最开始的位置(此操作称为回车).

        即\r:回车 \n换行。

        而在c语言环境下把\n简化 其代表回车加换行。

测试\n,\r:

\n,\r都存在,既有回车又有换行,所以其linux的命令行在我们执行程序下面。

只有\n

们在上面说了,这是我们在这个语言环境下我们将其简化,此时的\n就表示回车加换行。

\r \n都没有

linux命令就直接跟在文本行后面。

只有\r 

只有回车的效果,光标本来在文本行最后一个字符旁,回车后光标来到了文本行开始,最终导致文本被覆盖。 

 二,缓冲区的概念

#include<stdio.h>
#include<unistd.h>

int main()
{
	printf("hello world");
	sleep(3);
}

运行上面代码会发现结果没有立马打印出来,这是因为数据在sleep期间被暂时保存起来。

但是如果加上\n,数据就会显示出来。————缓冲区有自己的行缓冲刷新策略。

三,小程序

1.倒计时小程序

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 
  4 int main()
  5 {
  6   int i=0;
  7   for(i=9;i>=0;i--)
  8   {
  9     printf("%d\r",i);
 10                                                                                                            
 11     sleep(1);
 12   }
 13   return 0;
 14 }

我们利用\r覆盖的特性实现如上代码,但是结果倒计时却不显示,原因是数据存放在缓冲区里,缓冲区没有被刷新。我们将代码修改如下:

1 #include<stdio.h>
  2 #include<unistd.h>
  3 
  4 int main()
  5 {
  6   int i=0;
  7   for(i=9;i>=0;i--)
  8   {
  9     printf("%d\r",i);
 10     fflush(stdout);                                                                                                          
 11     sleep(1);
 12   }
 13   return 0;
 15 }

以上代码我们会发现如果时间变成两位数,将只能覆盖一位数,因此修改为:

1 #include<stdio.h>
  2 #include<unistd.h>
  3 
  4 int main()
  5 {
  6   int i=0;
  7   for(i=9;i>=0;i--)
  8   {
  9     printf("%-2d\r",i);
 10     fflush(stdout);                                                                                                          
 11     sleep(1);
 12   }
 13   return 0;
 15 }
~

2.进度条

进度条的预期样式:[#########################################] [%100] [/]

    第一个括号是进度条 第二个括号是进度百分比 第三个是旋转图标 用于判断是否卡住。

编写

proc.h,编写进度条的头文件
proc.c,编写进度条的函数
main.c,测试进度条

proc.h

 1  #pragma once                                                                                                                     
  2 
  3  #include <stdio.h>
  4 
  5 void process();   ~                        

main.c

 1 #include "proc.h"
  2 
  3 int main()
  4 {
  5   process();
  6   return 0;                                                                                                                  
  7 }

proc.c

  1 #include"proc.h"
  2 #include<unistd.h>
  3 #include<string.h>
  4 
  5 //  "|/-\"旋转标志
  6 void process()
  7 {
  8   const char* lable ="|/-\\";        //特殊字符\需要用\\
  9 
 10   //为什们要定义101个字符?
 11   //就是因为我们的进度条有100个
 12   //但是字符的结尾要用\0表示所以我们要有101个字符
 13   char bar[101];
 14   //先将进度条设置为\0,然后在依次增加#。
 15   memset(bar,'\0',sizeof(bar));
 16   int i=0;
 17   while(i<=100)
 18   {
 19     printf("[%-100s] [%d%%] [%c]\r",bar,i,lable[i%4]);                                                                       
 20     fflush(stdout);
 21     bar[i++]='#';
 22     usleep(100000);
 23   }
 24   printf("\n");
 25 
 26 }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值