Linux下实现进度条并且彩色打印
Posted 菜鸟营小杰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下实现进度条并且彩色打印相关的知识,希望对你有一定的参考价值。
Linux下实现进度条并彩色打印
一、为什么要实现一个进度条?
首先就是简单 ( ^_^ )
其次就是理解以下几个知识点:
1. \' \\r \' 与 \' \\n \' 的区别
先来看下什么是缓冲区:暂时存放输入输出信息的地方
\\r:将要输入输出的信息会覆盖缓冲区原有的信息
\\n:先进行输入输出信息,再换行,最后刷新缓冲区
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]\\r",bar, i, *(p + (i % 4))); 16 fflush(stdout); 17 bar[i++] = \'#\'; 18 usleep(100000); 19 } 20 21 printf("\\n"); 22 23 return 0; 24 }
二、如何实现彩色打印
Linux下使printf()函数显示不同颜色
颜色:
#define NONE "\\033[0m"
#define RED "\\033[0;32;31m"
#define LIGHT_RED "\\033[1;31m"
#define GREEN "\\033[0;32;32m"
#define LIGHT_GREEN "\\033[1;32m"
#define BLUE "\\033[0;32;34m"
#define LIGHT_BLUE "\\033[1;34m"
#define DARY_GRAY "\\033[1;30m"
#define CYAN "\\033[0;36m"
#define LIGHT_CYAN "\\033[1;36m"
#define PURPLE "\\033[0;35m"
#define LIGHT_PURPLE "\\033[1;35m"
#define BROWN "\\033[0;33m"
#define YELLOW "\\033[1;33m"
#define LIGHT_GRAY "\\033[0;37m"
#define WHITE "\\033[1;37m"
彩色进度条源代码
#include <stdio.h> #include <unistd.h> #include <string.h> #define RED "\\033[0;32;31m""]" #define NONE "\\033[0m""]" #define GREEN "\\033[0;32;32m""]" #define BLUE "\\033[0;32;34m""]" #define YELLOW "\\033[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]\\r",bar, i, *(p + (i % 4))); fflush(stdout); bar[i++] = \'#\'; usleep(100000); } printf(NONE); printf("\\n"); return 0; }
参考转载自:https://www.cnblogs.com/cuckoo-/p/10741562.html#top
以上是关于Linux下实现进度条并且彩色打印的主要内容,如果未能解决你的问题,请参考以下文章