实现进度条——基于c语言和shell脚本

实现进度条——基于c语言和shell脚本

       今天分享一下基于c语言和shell脚本的进度条的实现以及运行界面。

       进度条即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示。

       进度条要求能显示出:处理任务的速度完成任务的百分比以及用旋转的光标表示任务是否在进行

       基于c语言下的进度条:普通进度条,彩色进度条,以及实现的源代码和运行界面。

       普通进度条

 源程序:

  1 #include<stdio.h>
  2
  3 int main()
  4 {
  5     char a[102]={'\0'};//存储进度条进展的字符串
  6     a[0]='\0';
  7     char b[2]={'+','x'};//旋转光标
  8
  9     int i=0;
 10     while(i<=100)
 11     {
 12         a[i]='*';
 13         printf("%-100s %d%% %c\r", a, i, b[i%2]);//输出不换行
 14         fflush(stdout);//刷新缓冲区
 15         usleep(20000);
 16         ++i;
 17     }
 18     printf("\n");
 19     return 0;
 20 }

运行界面:

 

       彩色进度条

源程序:

  1 //color2
  2 #include<stdio.h>
  3
  4 int main()
  5 {
  6     char a[102]={'\0'};//存储进度条进展的字符串
  7     a[0]='\0';
  8     char b[2]={'+','x'};//旋转光标
  9
 10     printf("\033[46m");
 11     printf("%-108s\r");
 12     fflush(stdout);
 13     printf("\033[0m");
 14
 15     int i=0;
 16     while(i<=100)
 17     {
 18         a[i]=' ';
 19         printf("\033[45m\033[1m");
 20         printf("%s\033[0m %d%% %c \r", a, i, b[i%2]);//输出不换行
 21         fflush(stdout);//刷新缓冲区
 22         usleep(10000);
 23         ++i;
 24     }
 25     printf("\n");
 26     return 0;
 27 }

运行界面:

 

       基于shell脚本下的进度条:普通进度条,彩色进度条,以及实现的源代码和运行界面。

       普通进度条

 源程序:

  1 #!/bin/bash
  2
  3 i=1
  4 str=''
  5 index=0
  6 arr=("-" "/" "|" "\\")
  7
  8 while [ $i -le 100 ]
  9 do
 10     printf "%-100s%d%%%c\r" "$str" "$i" "${arr[$index]}"
 11     str='*'$str
 12     ((i++))
 13     ((index++))
 14     index=$index%4
 15     sleep 0.1
 16 done
 17 printf "\n"

运行界面:

 

       彩色进度条

源程序:

 1 #!/bin/bash
  2
  3 i=1
  4 str=''
  5 index=0
  6 arr=("+" "X" "+" "X")
  7 printf "\033[40m\033[1m\033[5m"
  8 printf "%100s\r"
  9
 10 while [ $i -le 100 ]
 11 do
 12     printf "\033[41m%s\033[0m%d%%%c\r" "$str" "$i" "${arr[$index]}"
 13     str=' '$str
 14     ((i++))
 15     ((index++))
 16     index=$index%4
 17     sleep 0.1
 18 done
 19 printf "\n"

运行界面:

 

        分享如上!愿各位学的开心!如有错误,望评论斧正!

        ps:关于彩色进度条颜色控制可参考:https://www.iflei.com/linux-terminal-color-progress-bar.html

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值