如何用c列印進度條
阿新 • • 發佈:2019-01-26
#include<stdio.h> #include<unistd.h> int main() { int i; printf(">>"); for(i=1;i<=100;i++) { if(i<11) printf(">"); printf("\b\b\b%d%%",i); fflush(stdout); usleep(10000); } printf("\n"); }
例如用c 列印進度 >>>>>>>>>>20%
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>100%
要求是一個連續的過程。
可以分析一波:列印的數字必須要求覆蓋掉,而且得隨著時間變化,比如隔1s進度條加1%,可以將數字看成變數。每秒加1,覆蓋數字可以用個輸出控制符\b來覆蓋之前列印的%和數字。
我們將進度條的數字定義成一個整型變數,再用for迴圈對其進行自加,並且每次迴圈間隔10000ms,這樣就能隨時間而變化數字了。
\b 的功能是游標向前進一個單位,上述列印了3個\b,目的是 當數值達到2位數時,例如 10%,要求把 1 0 和% 覆蓋掉 ,所以是三個\b。
開頭列印了兩個 > 符號 是與之後的字元相互匹配,因為要求覆蓋三個字元,而一開始時 數字只有一個數位 例如 1% 只有兩位,會將 >> 都覆蓋掉 ,所以前面加了一個if語句,描述的是,當要覆蓋的位數是2時,多列印一個 > ,這樣就可以避免少 > 的問題。
按照每次加1,增加一個 > ,由於usleep在使用時會出現延遲的問題,就是當你迴圈中 時間在跳,但是不輸出字元,(字元儲存在了緩衝區),所以用了fflush來重新整理,這樣就能夠一直的重新整理數字了。
%%的意思是輸出一個% ,可查資料。
這就是進度條的程式。