【Linux】彩色进度条的实现

在写进度条之前,我们首先应该知道以下几个小问题: 

1.fflush

  在实现的时候,需要每次输出完使用fflush(stdout)将缓冲区刷新,以便下一次的输出。

2.’\r’和 ‘\n’的区别:

(1):回车用’\r’表示,表示的是回到这行的起始位置。

(2):换行用‘\n’表示,表示的是换行到下一行。所以我们在实现时用的是’\r’,才能实现进度条的效果。

3.如何彩色输出:

终端的字符颜色由转义序列控制,是文本模式下的系统显示功能,与具体语言无关。转义序列以控制字符’ESC’开头。多数转义序列超过两个字符,故通常以’ESC’和左括号’[‘开头。该起始序列称为控制序列引导符,通常由’\033[‘或’\e[‘代替。

通过转义序列设置终端显示属性时,可采用以下格式:

\033[ Param {;Param;…}m 或 \e[ Param {;Param;…}m

其中,’\033[‘或’\e[‘引导转义序列;’m’表示设置属性并结束转义序列。Param为属性值,{…}表示可选(多个参数之间用分号隔开,与顺序无关)。

显示序列:
\033[0m           关闭转义序列
\033[1m           粗体或高亮
\033[5m           闪烁
前景颜色序列:
\033[30m          黑
\033[31m          红
\033[32m          绿
\033[33m          黄
\033[34m          蓝
\033[35m          洋红
\033[36m          青
\033[37m          白

在实现中为了增加可读性可以我们将颜色定义为宏,再进行使用。

注意:’\033[0m’用于恢复默认的终端输出属性,否则会影响后续的输出。

4.usleep()函数:

usleep()函数的功能是把调用该函数的线程挂起一段时间 , 单位是微秒(即百万分之一秒);

头文件: unistd.h

语法: void usleep(int micro_seconds);

在实现过程中我们可以调用usleep()函数来实现每0.1s刷新进度条的现象。
 

具体程序实现如下:

写完之后保存退出,就会有以下效果:

猜你喜欢

转载自blog.csdn.net/Miss_Monster/article/details/85864411