• Linux下实现进度条并且彩色打印


    Linux下实现进度条并彩色打印

    一、为什么要实现一个进度条?

      首先就是简单 ( ^_^ )

      其次就是理解以下几个知识点:

        1. ' ' 与 '  ' 的区别

          先来看下什么是缓冲区:暂时存放输入输出信息的地方

           :将要输入输出的信息会覆盖缓冲区原有的信息

           :先进行输入输出信息,再换行,最后刷新缓冲区

        2. usleep函数

          作用:把调用该函数的线程挂起一段时间,单位是微秒

          头文件:#include <unistd.h>

          语法:void usleep( int micro_seconds );

          注意:这个语法不能工作在windows系统下,可以用在Linux测试环境下

        3.fflush()

          fflush():会强迫将缓冲区中的数据写入回参stream指定的文件中

          作用:清楚读写缓冲区中的内容

          原型:int flush(FILE* stream)

          了解:stdout-->C语言头文件中的一个宏,它展开到一个FILE*类型的表达式,表达式指向一个与标准输出流相关联的FILE对象;只是为了输出方便

      最后让我们实现一下简单进度条的代码

     1 #include <stdio.h>
     2 #include <unistd.h>
     3 #include <string.h>
     4 
     5 int main(){
     6 
     7   char bar[101];
     8   int i = 0;
     9   const char* p = "-/|\";
    10 
    11   memset(bar, 0, sizeof(bar));
    12 
    13   while(i <= 100){
    14 
    15     printf("[%-100s][%d%%][%c]
    ",bar, i, *(p + (i % 4)));
    16     fflush(stdout);
    17     bar[i++] = '#';
    18     usleep(100000); 
    19   }
    20 
    21   printf("
    ");
    22 
    23   return 0;
    24 }

     

    二、如何实现彩色打印

      Linux下使printf()函数显示不同颜色

        颜色:
        #define NONE "33[0m" 
        #define RED "33[0;32;31m"
        #define LIGHT_RED "33[1;31m"
        #define GREEN "33[0;32;32m"
        #define LIGHT_GREEN "33[1;32m"
        #define BLUE "33[0;32;34m"
        #define LIGHT_BLUE "33[1;34m"
        #define DARY_GRAY "33[1;30m"
        #define CYAN "33[0;36m"
        #define LIGHT_CYAN "33[1;36m"
        #define PURPLE "33[0;35m"
        #define LIGHT_PURPLE "33[1;35m"
        #define BROWN "33[0;33m"
        #define YELLOW "33[1;33m"
        #define LIGHT_GRAY "33[0;37m"
        #define WHITE "33[1;37m"

      彩色进度条源代码

    #include <stdio.h>
    #include <unistd.h>
    #include <string.h>
    
    #define RED "33[0;32;31m""]"
    #define NONE "33[0m""]"
    #define GREEN "33[0;32;32m""]"
    #define BLUE "33[0;32;34m""]"
    #define YELLOW "33[1;33m""]"
    
    int main(){
      char bar[101];
      int i = 0;
      const char* p = "-/|\";
      memset(bar, 0, sizeof(bar));
      while(i <= 100){
        if(i % 4 == 0){
          printf(YELLOW);
        }else if(i % 4 == 1){
          printf(GREEN);
        }else if(i % 4 == 2){
          printf(BLUE);
        }else{
          printf(RED);
        }
        printf("[%-100s][%d%%][%c]
    ",bar, i, *(p + (i % 4)));
        fflush(stdout);
        bar[i++] = '#';
        usleep(100000); 
      }
      printf(NONE);
      printf("
    ");
    
      return 0;
    }

      参考转载自:https://www.cnblogs.com/cuckoo-/p/10741562.html#top

  • 相关阅读:
    spark性能调优 数据倾斜 内存不足 oom解决办法
    python2的中文编码
    spark UDF函数
    spark cache table
    spark 创建稀疏向量和矩阵
    mysql 分组排序
    给pyspark 设置新的环境
    CF662C Binary Table
    bzoj 4310 跳蚤
    3.29省选模拟赛 除法与取模 dp+组合计数
  • 原文地址:https://www.cnblogs.com/bj3251101/p/11808950.html
Copyright © 2020-2023  润新知