一、介绍
在实现使用中,我们需要打印进度这种信息的时候,终端进度条就显得很重要了
ANSI属性控制码:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[y;H 设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
原理,使用\r
\r回到行首
\n换行
\r\n回车换行
二、代码实现
#include <stdio.h>
#include <unistd.h>
int progress_bar(int x)
{
int i;
printf("\r\033[K");
printf("%d%[", x);
for(i = 0; i < (x/10); i++)
{
printf("#");
}
printf("]");
fflush(stdout);//立刻输出
return 0;
}
int main()
{
int x = 0;
printf("progress bar test \n");
while(1)
{
progress_bar(x);
x++;
if(x > 100)
x = 0;
usleep(50000);
}
return 0;
}
编译
gcc main.c -o main
运行
./main
效果