實現乙個簡單的進度條

2022-07-31 18:09:11 字數 1405 閱讀 3031

1、首先我們用固定在左右兩邊,中間預留空間,然後用'='進行填充在這裡我們用"="表示1%,通過增加字元

來保證進度的增加。printf("[%-100s]\r",str); 格式化輸出。'-'表示左對齊 100表示列寬,'\r'表示回車,即每

次列印完使游標回到行首在這裡需要解釋一下'\r'和'\n'這兩個概念

回車:'\r',表示回到當前行的行首

2、加睡眠時間,如果不加睡眠時間,結果一下就全列印出來,那就不是進度條了。

linux下sleep時間單位為秒,這樣的話感覺間隔時間有點長,於是又有了usleep函式

我們可以通過man 來檢視這連個函式:

3、在觀察程式輸出結果是會發現它是一段一段顯示,這和我們平常見到的

進度條不一樣。究其原因,發現是printf()的原因,,printf是先將要輸出的內容

寫到緩衝區裡,然後再重新整理。

現在來看一下unix裡面關於標準io的幾種緩衝機制:

<1>全緩衝:指的是系統在填滿標準io緩衝區之後,才進行實際的io操作

;磁碟上的檔案通常由標準io庫實施全緩衝

<2>行緩衝:標準io在輸入輸出時遇到換行符(\n)的時候才將緩衝區的內容

寫入到標準輸入輸出的磁碟檔案。注意:當流涉及到終端時

通常使用的是行緩衝

<3>無緩衝:指的是標準io庫不對字元進行緩衝儲存,

注意:標準出錯流stderr通常是無緩衝。

printf()是乙個行緩衝函式,先寫到緩衝區中,滿足重新整理條件才將緩衝區的內容重新整理到對應的檔案中

,重新整理緩衝區的條件如下:

(1)緩衝區已滿;

(2)遇到\n;

(3)呼叫ffush手動重新整理緩衝區;

(4)呼叫scanf()從緩衝區讀取資料時,也會將緩衝區的資料重新整理;

滿足上面的任意乙個條件緩衝區就會重新整理

**如下:

1

void

proc()2;

5const

char* arr = "

-\\|/";

6while(rate<=100)7

14}15int

main()

16

效果展示:

4.最後補充一點,編寫makefile檔案

直接輸入make 就會生成proc檔案

執行程式命令 ./proc

執行完之後記得清理解決方案

shell實現乙個簡單進度條

用命令test或 測試乙個條件是否成立。如果測試條件為真,命令的exit status為0,測試條件為假,exit status為1。這裡輸入的數字比10大,條件成立為0,比10小條件不成立為1.整數比較 lt 小於 le 小於等於 gt 大於 ge 大於等於 eq 等於 ne 不等於 測試命令 與...

Python 乙個簡單的進度條的實現

import math defprocess bar total work,work index,length times total work length 長度倍數,用來縮放或擴充套件至所需要的長度。例如總量為15或155都可以按照長度為20來輸出 percentage work index 1...

實現乙個彩色進度條

顯示序列 033 0m 關閉轉義序列 033 1m 粗體或高亮 033 5m 閃爍 前景顏色序列 033 30m 黑 033 31m 紅 033 32m 綠 033 33m 黃 033 34m 藍 033 35m 洋紅 033 36m 青 033 37m 白 背景顏色序列 與前景顏色對對應,前景色是...