Linux下實現進度條並且彩色列印

2022-03-10 04:48:10 字數 2138 閱讀 6475

linux下實現進度條並彩色列印

一、為什麼要實現乙個進度條?

首先就是簡單 ( ^_^ )

其次就是理解以下幾個知識點:

1. ' \r ' 與 '  \n ' 的區別

先來看下什麼是緩衝區:暫時存放輸入輸出資訊的地方

\r:將要輸入輸出的資訊會覆蓋緩衝區原有的資訊

\n:先進行輸入輸出資訊,再換行,最後重新整理緩衝區

2. usleep函式

作用:把呼叫該函式的執行緒掛起一段時間,單位是微秒

標頭檔案:#include

語法:void usleep( int micro_seconds );

注意:這個語法不能工作在windows系統下,可以用在linux測試環境下

3.fflush()

fflush():會強迫將緩衝區中的資料寫入回參stream指定的檔案中

作用:清楚讀寫緩衝區中的內容

原型:int flush(file* stream)

了解:stdout-->c語言標頭檔案中的乙個巨集,它展開到乙個file*型別的表示式,表示式指向乙個與標準輸出流相關聯的file物件;只是為了輸出方便

最後讓我們實現一下簡單進度條的**

1 #include 2 #include 3 #include 45

intmain()

2021 printf("\n"

);22

23return0;

24 }

二、如何實現彩色列印

linux下使printf()函式顯示不同顏色

顏色:#define none "\033[0m" 

#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"

彩色進度條源**

#include #include 

#include

#define red "\033[0;32;31m""]"

#define none "\033[0m""]"

#define green "\033[0;32;32m""]"

#define blue "\033[0;32;34m""]"

#define yellow "\033[1;33m""]"

intmain()

else

if(i % 4 == 1

)else

if(i % 4 == 2

)else

printf(

"[%-100s][%d%%][%c]\r

",bar, i, *(p + (i % 4

)));

fflush(stdout);

bar[i++] = '#'

; usleep(

100000

); }

printf(none);

printf("\n

");return0;

}

Linux下彩色進度條

回車與換行 緩衝區概念 乙個緩衝區物件是固定數量的資料的容器,其作用是乙個儲存器 記憶體 或者分段運輸區,在這裡資料可被儲存並在之後用於檢索。緩衝區可分為 全緩衝,行緩衝,不帶緩衝 全緩衝 當填滿標準io的快取後才進行實際io操作。windows和linux都可以通過給 mode設為 iofbf設定...

Linux下彩色進度條的實現

在linux下安裝軟體的過程中會出現乙個進度條,它通過動態增加一些符號來表示安裝進度。今天我們就來模擬實現一下乙個進度條。在實現進度條之前,首先需要了解一些概念。一.緩衝區 緩衝區分為三種 無緩衝,行緩衝和全緩衝。無緩衝 指沒有緩衝,立即顯示資訊。行緩衝 輸入輸出遇到換行符才進行io操作。全緩衝 輸...

Linux下彩色進度條的實現

實現乙個彩色進度條的前提是要了解linux下如何改變shell的輸出顏色,shell的輸出顏色改變是通過轉義序列完成的。多數轉義序列以控制字元 esc 和左中括號 開頭。該起始序列稱為控制序列引導符,通常由 033 或 e 代替 通過轉義序列設定終端顯示屬性時,採用以下格式 033 屬性m 或 e ...