描述:
1.进度条原理:第一次打印一个字符,例如”#”,然后使光标定位到本行首,覆盖之前打印的字符串,第二次打印”##”,覆盖之前打印的字符串,重复上述操作,直到打印100个字符。
2.fflush(stdout): fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。
3.usleep 让程序休眠,时间单位:微秒。即:每隔多长时间打印一个“#”。
4.由于Linux环境下是 命令行界面,所以无法完美的展现‘转动状态’,因而循环打印‘-’,‘/’,‘|’,‘\’......
5.颜色的变换:#define NONE "\033[m"
#define RED "\033[0;32;31m"-----30%以下时为 红色;
#define YELLOW "\033[1;33m"------30%~60% 为黄色;
#define GREEN "\033[0;32;32m"---60%以上为绿色。
(生动的展现了一个例如游戏中 英雄回血 的状态)
int main(){
//转起来像图形界面
char split[4] = {'-','/','|','\\'};
char buf[1024] = {0};
int i = 0;
for(; i <= 100; i++){
buf[i] = '#';
if(i < 30 ){
printf("\033[0;32;31m""[%d%%][%c][%s]\r",i,split[i % 4],buf);
}
else if(i >=30 && i < 60){
printf("\033[1;33m""[%d%%][%c][%s]\r",i,split[i % 4],buf);
}
else
printf("\033[0;32;32m""[%d%%][%c][%s]\r",i,split[i % 4],buf);
//printf 已执行,却没有打印
//数据当前还在缓冲区中
fflush(stdout);
//usleep 让程序休眠,时间单位:微秒
usleep(100*1000);
}
return 0;
}
运行效果截图(本为动态(不换行),此处截图)