Linux實現簡單的進度條

2021-07-30 04:23:31 字數 891 閱讀 2919

1、回車換行

回車換行(\n):每次游標移到下一行的行首位置處;

換行(\r):每次游標移到本行的行首位置處

在輸入\r,游標將移動到行首,輸入\n游標換行並且移動到下一行行首,相當於\n\r。

2、行緩衝區、fflush

緩衝區分為無緩衝、行緩衝、全緩衝。

無緩衝:表示的是沒有緩衝,可以將資訊立馬顯現出來,典型代表是標準錯誤流stderr。

行緩衝:表示的是輸入輸出遇到換行才執行真正的i/o操作。典型的代表是鍵盤的操作。

全緩衝:表示的是輸入輸出寫滿緩衝區才執行i/o操作。典型的代表是磁碟的讀寫。

printf是乙個行緩衝函式,先寫到緩衝區,滿足條件後,才將緩衝區刷到對應檔案中,刷緩衝區的條件如下:

1 緩衝區填滿

2 寫入的字元中有『\n』 『\r』

3 呼叫fflush手動重新整理緩衝區

4 呼叫scanf要從緩衝區中讀取資料時,也會將緩衝區內的資料重新整理

滿足上面4個條件之一緩衝區就會重新整理,,也就是printf會真正呼叫write來寫入

當我們執行printf的程序或者執行緒結束的時候會主動呼叫flush來重新整理緩衝區,所以程式結束,也會重新整理。

3、sleep,usleep

linux下(使用的gcc的庫),sleep()函式是以秒為單位的,sleep(1);就是休眠1秒。而mfc下的sleep()函式是以毫秒為單位的,sleep(1000);才是休眠1秒。而如果在linux下也用微妙為單位休眠,可以使用執行緒休眠函式:void usleep(unsigned long usec)。

程式**如下:

結果:

Linux 簡單實現進度條

1 進度條存在乙個區間,不斷載入資料,直到區間加載滿了。2 發現會顯示你的進度,從0 100 3 在網速不好的時候,會出現乙個旋轉的小圈,表示在進行載入資料。思路 我們通過乙個陣列,每載入成功一次,陣列會多出現乙個標示。由於進度條是在一行內進行的,故我們需要回車,不需要換行,通過 r 實現。1 進度...

進度條的簡單實現

首先重申一下幾個概念 1 回車與換行 回車與換行是不同的概念,但很多人都不太清楚二者之間有何區別。回車是回到當前行的行首,而不會換到下一行,如果接著輸入的話,之前的內容會被沖掉,從頭開始寫入,表示為 r。換行顧名思義是換到換到下一行,但不會回到行首。一般enter鍵代表了回車和換行。2 進度條的原理...

簡單進度條的實現

首先讓我們先來看進度條實現的 include include include int main printf n return 0 其中用了乙個函式usleep,在gcc編譯器中,它包含在標頭檔案unistd.h中,其單位為微秒,sleep單位為毫秒,sleep單位為秒。r 表示回車,表示輸出一行後...