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 45intmain()
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 ...