在開始實現進度條之前首先要清楚三個概念:
回車概念( \r ),換行概念( \n ),行緩衝區概念
\r&&\n概念:
在不同的作業系統下回車換行的意義不同:
windows:
unix:
mac os:
如果將unix/mac系統下的檔案在windows裡開啟,所有文字會變成一行;
如果將windows裡的檔案在unix/mac下開啟,在每行的結尾可能會多出乙個^m符號;
行緩衝區概念:
緩衝區分為三種型別:全緩衝,行緩衝和不帶緩衝;
理解了上面的概念,下面來實現進度條。
在實現時用到了usleep()函式和fflush()函式。
usleep()函式的作用是:讓程式睡眠,引數單位預設為秒,包含在」unistd.h」標頭檔案中;
fflush()函式的作用是:清除讀寫緩衝區,引數為標準輸入\輸出流 ;
如果不使用fflush()函式,在進度條輸出時,會看到每次重新整理出來的內容是增加的,不是乙個乙個的出現。
#include
#include
int main ();
//用來顯示進度條
int i =0;
const
char
* laber =
"|/-\\"
;//新增乙個閃動的游標,用來表示進度條正在進行
// 這裡的兩個'\'是防止轉義
在普通版的進度條的基礎上進行些許修改,讓進度條的顯示方式更加貼近實際所看到的進度條。
這裡還需要了解一些系統顯示方面的東西:
終端的字元顏色由轉義序列控制,是文字模式下的系統顯示功能,與具體語言無關。
轉義序列以控制字元』esc』開頭。多數轉義序列超過兩個字元,故通常以』esc』和左括號』[『開頭。該起始序列稱為控制序列引導符,通常由』\033[『或』\e[『代替。
通過轉義序列設定終端顯示屬性時,可採用以下格式:
\033[paramm 或 \e[paramm
其中,\033[或\e[為引導轉義序列,param為屬性項,表示可選,多個選項間用分號間隔,m表示設定屬性並結束轉義序列。
常見的屬性項為(具體可根據:man console_codes命令查詢):
顯示序列:
\033
[0m 關閉轉義序列
\033
[1m 粗體或高亮
\033
[5m 閃爍
前景顏色序列:
\033
[30m 黑
\033
[31m 紅
\033
[32m 綠
\033
[33m 黃
\033
[34m 藍
\033
[35m 洋紅
\033
[36m 青
\033
[37m 白
背景顏色序列:
與前景顏色對對應,前景色是30
+,背景色是40
+
下面我們就可以將進度條實現的更加貼近實際所看到的樣式;
Linux下彩色進度條的實現
在linux下安裝軟體的過程中會出現乙個進度條,它通過動態增加一些符號來表示安裝進度。今天我們就來模擬實現一下乙個進度條。在實現進度條之前,首先需要了解一些概念。一.緩衝區 緩衝區分為三種 無緩衝,行緩衝和全緩衝。無緩衝 指沒有緩衝,立即顯示資訊。行緩衝 輸入輸出遇到換行符才進行io操作。全緩衝 輸...
Linux下彩色進度條的實現
實現乙個彩色進度條的前提是要了解linux下如何改變shell的輸出顏色,shell的輸出顏色改變是通過轉義序列完成的。多數轉義序列以控制字元 esc 和左中括號 開頭。該起始序列稱為控制序列引導符,通常由 033 或 e 代替 通過轉義序列設定終端顯示屬性時,採用以下格式 033 屬性m 或 e ...
shell實現彩色進度條
hello,今天分享的是shell實現彩色進度條。進度條,通過顯示字元所佔列印字元的比率,字元的數目的增加,以及長度的變化在顯示器上模擬出進度條的變化 下面 實現的是漸變色,執行時色度不停會發生變化,主要是引數color的變化,隨著i的變化,color 32 i 8 color也在發生變化,所以進度...