Linux下實現進度條

2021-07-25 18:30:12 字數 2921 閱讀 4533

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函式。好了,那現在我們就來...