目录
一、代码一版
1.processbar.h
2.processbar.c
3.main.c
二、代码二版
1.processbar.h
2.processbar.c
3.main.c
三、改变文字颜色
一、代码一版
使用模块化编程
1.processbar.h
#include<stdio.h>
#define capacity 101 //常量使用宏定义
#define style '=' //符号方便后续修改
extern void processbar();
修饰变量的时候一定要带extern,修饰函数的时候可以省略,因为没有函数体就表明它一定是声明
2.processbar.c
#include"processbar.h"
#include<string.h>
#include<unistd.h>
char* load ="|/-\\";
void processbar()
{char bar[capacity];memset(bar,'\0',sizeof(bar));int size = strlen(load);int cent = 0;while(cent <=99){bar[cent++] = style;if(cent <= 99 )bar[cent] = '>';printf("[%-100s][%d%%][%c]\r",bar,cent,load[cent%size]);fflush(stdout);//没有\n就没法立即刷新,因为显示器模式是行刷新,因此手动刷新usleep(100000);//休眠xx微秒}printf("\n");
}
3.main.c
int main()
{processbar();return 0;
}
效果图,当进度未达到100时,在进度条最右端会有>,同时会有加载效果 由数组
char* load ="|/-\\";
进行实现
二、代码二版
processbar函数只负责打印,能更好地模拟下载过程
1.processbar.h
#include<stdio.h>
#define capacity 101
#define style '='
extern void processbar();
2.processbar.c
#include"processbar.h"
#include<string.h>
#include<unistd.h>
char* load ="|/-\\";
char bar[capacity];
void processbar(int cent)
{if(cent > 100 || cent < 0)return;int size = strlen(load);bar[cent++] = style;if(cent <= 99 )bar[cent] = '>';printf("[%-100s][%d%%][%c]\r",bar,cent,load[cent%size]);fflush(stdout);if(cent > 99)memset(bar,'\0',sizeof(bar));}
3.main.c
#include"processbar.h"
typedef void(*callback_t)(int);//回调函数void Download(callback_t cb)
{int total = 100;//100MBint curr = 0;while(curr < total){//假设有一个下载usleep(50000);//模拟下载的时间int rate = curr * 100 / total;//更新进度cb(rate);//通过回调函数显示进度curr += 1;}printf("\n");
}
int main()
{Download(processbar);printf("\n");Download(processbar);return 0;
}
临近字符串具有自动链接功能例如
printf("helloworld")
printf("hello""world")
三、改变文字颜色
//颜色宏定义
#define NONE "\033[m"
#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"
使用方法
1.如果你想要让某一段文字变成某个颜色
printf(YELLOW"this print msg is yellow!\n"NONE);
这两个指令相当于 开关,可以放置在任意位置。
如果开启开关,后面的所有字的颜色都会变成这个颜色
开启后关掉的话只会让某一段文字变色