Linux 简易进度条实现及输出颜色控制

在Linux下换行和回车的区别在于\r让光标会到当前行的开始,\n让光标回到下一行的开始。进度条是在同一行输出,所以要用\r实现而进度条由0%~100%。
缓存区:无缓存,行缓存,全缓存
无缓存:指没有缓冲,直接将信息打印在显示器上,比如标准错误stderr
行缓存:输入输出遇到换行的时候才执行。
全缓存:输入输出的时候写满缓存区的时候执行I/O操作
fflush:清除读写缓存区,需要立即把输入缓存区的数据进行物理写入
fflush(stdin):刷新标准输入缓冲区,把输入缓冲区的数据清楚
fflush(stdout):刷新标准输出缓冲区,把输出缓存区的数据打印到输出设备上
usleep:单位时间微妙,挂起进程。sleep单位时间秒。

printfs输出颜色控制如下图:"\e[40;33m] \e[0m]"
40表示背景颜色,33表示输出字体颜色,\e[40;33m] \e[0m]中间为颜色控制部分

在这里插入图片描述
颜色:0(黑)1(红)2(绿)3(黄)4(蓝)5(洋红)6(青)7(白)
字体色:30+颜色值
背景色:40+颜色值

#include<stdio.h>                                                                  
   #include<string.h>
    #include<unistd.h>
  int main()
    {
     int i = 0;
        char bar[102];
      memset(bar,'\0',sizeof(bar));
       const char *a="|/-\\";
      for(;i<=100;i++)
          {
              bar[i] = '*';
            if(i%4 == 1)
              {
   printf("\e[40;33m[%-101s]\e[0m[%d%%][\e[34m%c\e[0m]\r",bar,i,a[i%4]);
           }
              if(i%4 == 2)
    {
     printf("\e[40;35m[%-101s]\e[0m[%d%%][\e[33m%c\e[0m]\r",bar,i,a[i%4]);
     }
     if(i%4 == 3{
      printf("\e[40;31m[%-101s]\e[0m[%d%%][\e[32m%c\e[0m]\r",bar,i,a[i%4]);
     }
     if(i%4 == 0)
     {
     printf("\e[40;37m[%-101s]\e[0m[%d%%][\e[31m%c\e[0m]\r",bar,i,a[i%4]);
     }
             fflush(stdout);
                        usleep(100000);
         }
     printf("\n");
     }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值