緩衝區分為無緩衝、行緩衝、全緩衝。
無緩衝
表示的是沒有緩衝,可以將資訊立馬顯現出來,典型代表是標準錯誤流stderr。行快取
0.表示的是輸入輸出遇到換行才執行真正的i/o操作。典型的代表是鍵盤的操作全緩衝1.緩衝區如果滿了,就會真正寫道顯示器上
2.如果遇到/n也會寫道顯示器上 如果把資料寫到檔案中,/n就不能重新整理緩衝區了
3.程式結束的時候也「可能」會重新整理
4.fflush 手動重新整理
表示的是輸入輸出寫滿緩衝區才執行i/o操作。典型的代表是磁碟的讀寫。
printf是乙個行緩衝函式,先寫到緩衝區,滿足條件後,才將緩衝區刷到對應檔案中,刷緩衝區的條件如下:(任滿足其一即可)/n 與 /r(1)緩衝區填滿;
(2)寫入的字元中有『\n』 ,』\r』;
(3)呼叫fflush手動重新整理緩衝區;
(4)呼叫scanf要從緩衝區中讀取資料時,也會將緩衝區內的資料重新整理;
/n表示換行,另起新行,游標來到下一行行首。可以起到重新整理緩衝區的作用(只針對顯示器)/r 表示回車,每次列印完游標回到最開始位置
1 #include
//usleep的標頭檔案 只有再linux下有這個標頭檔案
終端的字元顏色由轉義序列控制,是文字模式下的系統顯示功能,與具體語言無關。轉義序列以控制字元』esc』開頭。多數轉義序列超過兩個字元,故通常以』esc』和左括號』[『開頭。該起始序列稱為控制序列引導符,通常由』\033[『或』\e[『代替。
//恢復預設顏色
6 #define red "\e[0;31m"
//在實現中為了增加可讀性將顏色定義為巨集,再進行使用。
7 #define blue "\e[0;34m"89
intmain()
1019
else
20printf
(blue"[%-100s][%d%%][%c]\r"none, bar , i , lable[i%4]
);21fflush
(stdout);
22 bar[i++]=
'#';
23usleep
(100000);
24}25printf
("\n");
26return0;
27}
Linux小程式 彩色進度條
在實現彩色彩色進度條的過程中,我們先來了解一下相關的知識,這樣才能幫助我們更好的實現進度條。一 相關背景 在linux下安裝檔案都會有乙個進度條來提示我們安裝的進度,它裡面會動態增長的乙個影象表示進度,同時還有百分數表示安裝百分比等等資訊。二 緩衝區的相關知識 一般c庫函式寫入檔案是全緩衝方式,而寫...
Linux下彩色進度條
回車與換行 緩衝區概念 乙個緩衝區物件是固定數量的資料的容器,其作用是乙個儲存器 記憶體 或者分段運輸區,在這裡資料可被儲存並在之後用於檢索。緩衝區可分為 全緩衝,行緩衝,不帶緩衝 全緩衝 當填滿標準io的快取後才進行實際io操作。windows和linux都可以通過給 mode設為 iofbf設定...
shell之彩色進度條
bin bash b for i 0 i 100 i 1 do printf e 32m progress e 31m 100s e 33m d r b i 100s 設定初始顯示格數 r return,回到開始輸出的地方 sleep 0.1 b done echo 下面是字型輸出顏色及終端格式控制...