实现一个彩色的进度条
要实现这个小的程序需要了解一些知识.
Linux下的 \n 与 \r
\n : 换行
\r : 回车
在linux下的回车键只代表\n,而在windows下的回车键表示\r\n (\n为进入下一行,\r为回到行首上)linux下只用\n,它就表示回车+换行 而windows下,\r只回车不换行的,\n是换行.
缓冲区
缓冲区分为三种:全缓冲区,行缓冲区,无缓冲区.
全缓冲区:当缓冲区满了之后,就进行刷新
行缓冲区:当遇到\n时或者缓冲区满了之后,进行刷新
无缓冲区:无缓冲区的设置是为了使出现错误信息被很快显示出来.
printf输出字体色彩的控制
格式:
printf("\033[字背景颜色;字体颜色m字符串\033[0m" );
部分颜色代码:
字背景颜色: 40--49 字颜色: 30--39
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47:白色 37:白色
//下面是实现彩色进度条的代码:
#include<stdio.h>
#include<unistd.h>
int main()
{
int i=0;
char bar[100]="\0";
const char *lable="|/-\\";
for(i=0;i<101;i++)
{
printf("\033[1m\033[45;33m[%-100s][%d%%][%c]\033[0m\r",bar,i,lable[i%4]);
bar[i]='#';
fflush(stdout);
usleep(100000);
}
printf("\n");
return 0;
}
shell脚本语言实现
proc(){
bar=""
lable=('|' '\\' '-' '/')
index=0
for (( i=0; i<=100; i++))
do
#echo ${lable[$index]}
printf "[%-100s][%d%%][%c]\r" "$bar" "$i" "${lable[$index]}"
sleep 0.1
bar=$bar'#'
(( index++ ))
(( index %= 4 ))
done
printf "\n"
}
proc