1、進度條存在乙個區間,不斷載入資料,直到區間加載滿了。
2、發現會顯示你的進度,從0%~100%。
3、在網速不好的時候,會出現乙個旋轉的小圈,表示在進行載入資料。
下來呢,我們先說一下實現的大概思路:
1、進度條由0%~100%,在字元陣列中,輸出一串字元時,最後以「\0」結
束的,故需要乙個
大小為102的陣列
,載入成功的資料用「=」表示。
2、進度條會出現乙個區間,然後在裡面進行載入,故先用「[」和「]」表示載入的區間。
3、定義乙個rate標識進度,每進行一次加一,直到100時停止。 4、
在進行回車前,需要進行重新整理。
5、在載入進度時,通過sleep()或usleep()控制睡眠時間,sleep表示秒,usleep表示微秒。
6、對於載入中旋轉的小圈通過「-\|/」順時針進行。
然後我們就開始來實現進度條了。
下圖是實現**:
再下面呢,就是實現的結果啦,不過很遺憾,我沒有截**,大家自己實現時結果應該是動態顯示的
關於linux下程式編寫完成之後,進行編譯連線聲稱可執行檔案,我們有兩種方式:
1.gcc main.c procbar.c -o procbar
2.編譯makefile檔案
編寫好makefile檔案之後,我們只需要直接輸入make指令,就會生成我們需要的procbar檔案。
清理其他無用的檔案,我們可以直接用clean指令。
下圖就是makefile檔案的編寫以及應該注意的問題:
最後呢,我來總結一下進度條的實現應該注意的一些問題:
1.回車(\r)和換行(\n)問題:
回車和換行是兩個不同的概念,回車:\r,表示回到當前行的行首,ascii值是13;而換行表示游標進入當前行的下一行,ascii值是10。
在linux中,\n會進行回車加換行的操作,而\r不會進行回車的操作,只會被當做控制字元處理。
在windows下,每行的結尾是;在linux下,每行的結尾是。所以,linux下開啟windows的檔案,每行會多出乙個^m符號;而在windows下開啟linux檔案,所有的內容變成一行。
2.緩衝區問題:
(1)什麼是緩衝區
緩衝區又稱為快取,它是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,這部分預留的空間就叫做緩衝區。
緩衝區根據其對應的是輸入裝置還是輸出裝置,分為輸入緩衝區和輸出緩衝區。
(2)為什麼要引入緩衝區
我們為什麼要引入緩衝區呢?
比如我們從磁碟裡取資訊,我們先把讀出的資料放在緩衝區,計算機再直接從緩衝區中取資料,等緩衝區的資料取完後再去磁碟中讀取,這樣就可以減少磁碟的讀寫次數,再加上計算機對緩衝區的操作大大快於對磁碟的操作,故應用緩衝區可大大提高計算機的執行速度。
又比如,我們使用印表機列印文件,由於印表機的列印速度相對較慢,我們先把文件輸出到印表機相應的緩衝區,印表機再自行逐步列印,這時我們的cpu可以處理別的事情。
現在您基本明白了吧,緩衝區就是一塊記憶體區,它用在輸入輸出裝置和cpu之間,用來快取資料。它使得低速的輸入輸出裝置和高速的cpu能夠協調工作,避免低速的輸入輸出裝置占用cpu,解放出cpu,使其能夠高效率工作。
(3)緩衝區的型別
緩衝區 分為三種型別:全緩衝、行緩衝和不帶緩衝。
a、全緩衝
在這種情況下,當填滿標準i/o快取後才進行實際i/o操作。全緩衝的典型代表是對磁碟檔案的讀寫。
b、行緩衝
在這種情況下,當在輸入和輸出中遇到換行符時,執行真正的i/o操作。這時,我們輸入的字元先存放在緩衝區,等按下回車鍵換行時才進行實際的i/o操作。典型代表是鍵盤輸入資料。
c、不帶緩衝
也就是不進行緩衝,標準出錯情況stderr是典型代表,這使得出錯資訊可以直接盡快地顯示出來。
(4)緩衝區的重新整理
下列情況會引發緩衝區的重新整理:
1、緩衝區滿時;
2、執行flush語句;
3、執行endl語句;
4、關閉檔案。
可見,緩衝區滿或關閉檔案時都會重新整理緩衝區,進行真正的i/o操作。另外,在c++中,我們可以使用flush函式來重新整理緩衝區(執行i/o操作並清空緩衝區),如:
cout<
endl控制符的作用是將游標移動到輸出裝置中下一行開頭處,並且清空緩衝區。
cout< 由於
在c語言中是行緩衝,程式存放在緩衝區中,遇到'\n'進行重新整理,沒有'\n'一直進行後面操作,程式被強制結束會進行重新整理。
回車換行是一行到新一行的列印。
3.函式標頭檔案的查詢:
linux下呢,有乙個萬能的「男人」,我們有什麼不懂得,就可以去問這個「男人」,它就是man指令。下面我們以查詢fflush()函式的標頭檔案來使用man命令查詢,
輸入man fflush後按回車鍵,就會出現下圖內容:
這樣我們就可以很快找到函式所在的標頭檔案,而且還可以看到函式的原型。輸入q就可以退出。
Linux下進度條
功能 模擬1到100的進度條,每次顯示列印了百分之多少 首先要明白幾個轉義字元在不同平台的功能 r return 到當前行的最左邊。n newline 向下移動一行,並不移動左右。linux中 n表示回車 換行 windows中 r n表示回車 換行。mac中 r表示回車 換行。現在進行實現 buf...
linux實現進度條
linux實現進度條 如下 include 2 include 3 int main 4 17 return 0 18 截圖 上述 採用 makefile 基本原理 1 進度條原理 建立乙個範圍為0到100的進度條.我會把進度條初始為0,然後,當我載入乙個資源的時候我會用單位長度來讓進度條前進乙個步...
Linux實現進度條
緩衝方式 行緩衝 n 就是行緩衝的標誌 全緩衝 如果把結果輸出到檔案中就是預設的全緩衝。我們要知道,printf函式輸出的內容是存在緩衝區的,n 行緩衝 就可以把緩衝區的內容立即輸出到輸出裝置,如果沒有 n 的話,就會一直往緩衝區裡面寫,知道緩衝區滿了,或者呼叫fflush函式。好了,那現在我們就來...