1. 程式人生 > >如何用c列印進度條

如何用c列印進度條

#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來重新整理,這樣就能夠一直的重新整理數字了。

  %%的意思是輸出一個% ,可查資料。

這就是進度條的程式。