Linux----进度条(彩色)

简单进度条的实现

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

int main()
{
   int k=0;
   char bar[102];
   memset(bar,0,sizeof(bar));
    const char* str="|-/\\";
   for(;k<=100;++k)
    {
       printf("[%-100s] (%d%%) [%c]\r",bar,k,str[k%4                
        ]);
        fflush(stdout);
        bar[k]='*';
        sleep(1);
     }
     printf("\n");
     return 0;
 }

注解:
1.[%-100s]:表示每次从左边开始打印100个字符,长度不够的时候用空格补齐;
如果是[%+100s]:表示每次从右边开始打印100个字符,长度不够的时候用空格补齐。
2.’\r’:表示每次打印的时候光标在同一行的开头;
‘\n’:每次打印将光标放在下一行,并不一定是开头;
‘\r\n’:每次打印将光标放在下一行的开头。
3.使用fflush函数将每次打印的数据刷新到标准输出,方便观察使用sleep函数进行等待。

彩色进度条的实现
终端的字符颜色由转义序列控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符’ESC’开头。多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符,由’\033[‘或’\e[‘代替。

代码实现:

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

int main()
{
    int k=0;
     int j=0;
     int color[]={4,3,2,5,6};
     char bar[102];
     memset(bar,0,sizeof(bar));
     const char* str="|/-\\";
      for(;k<=100;++k)
     {
         printf("\033[3%dm[%-100s]\033[0m\033[33m[%d%%]\033[0m[%c]\r",                  
             color[j], bar, k, str[k % 4]);
        fflush(stdout);
        bar[k]='*';
        //每20%变色一次
        if(k%20==0)
        {
            ++j;
        }
        usleep(7000);
     }
     printf("\n");
     return 0;
 }

猜你喜欢

转载自blog.csdn.net/qq_39295755/article/details/81065634