在Linux下实现彩色进度条

实现彩色进度条,实际上就是输出一遍字符,刷新一下,再次输出重复这样的过程。

在这里我们需要知道几点:

彩色:

终端的字符颜色的控制由转义字符实现。通过转义序列显示终端的颜色通常以“\033[”开头,以m来表示转义序列结束。但最重要的是我们在输出完之后要用“\033[0m”来关闭所有属性,否则之后的输出也会变成所设置的颜色。下面只列出本次代码所用到的转义属性。

\033[0m              关闭所有属性   但输出没啥变化
\033[31m            设置色调为红色(30-37皆为可选色调)

时间差:

这里的睡眠时间选择usleep(),usleep函数睡眠单位是百万分之一秒,sleep()为1秒

缓存区:

无缓冲:指没有缓冲,立即显示信息。

行缓冲:输入输出遇到换行符才进行IO操作。

全缓冲:输入输出写满缓冲区才进行IO操作。


1 #include<stdio.h>
  2 #include<unistd.h>
  3 #include<string.h>
  4 int main()
  5 {
  6      char bash[102];//0-100是101个,再加上'\0'总共102个
  7      const char*label="|/-\\";//"\"为转义字符想要输出它必须在前面再加上一个
  8      int i=0;
  9      memset(bash,0,sizeof(bash));
10      while(i<=100)
11     {
12         printf("\033[31m[%-100s][%d%%][%c]\r",bash,i,label[i%4]);//%4是因为总共四个字符,交替变换
13           fflush(stdout);//刷新缓存区
14           bash[i++]='I';//每次输出后在数组最后一位赋值
15           usleep(100000);//睡0.1秒
16      }
17      printf("\n");
18      return 0;
19 }



PS:如果大家有兴趣想让进度条在递增时发生变色,可以在while函数里面做做文章。。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值