Linux下的進度條小程序

     本文的題目就是實現一個進度條,進度條的應用在軟件中無處不在,拷貝一個文件需要一個進度條,加載一個文件也需要一個進度條,來標誌完成與否。

    那麼 ,一個進度條有哪些元素呢:


  1. 一個不斷向右生長的容器(直觀的看出當前的進度)

  2. 一個數據化反映進度的百分比。

  3. 一個標誌(這個標誌反映這個進度條是否在工作,還是卡死)

在這裏有一些小小的知識點:C語言中緩衝區的刷新方式是以行緩衝刷新的。也就是說,程序要在輸入流中取到一個行結束標誌(可以是換行符和EOF)纔會顯示在輸出設備(屏幕)上。注意,程序結束時,系統會強制刷新緩衝區。



  根據需要,我們可以使用一個字符數組充當進度條的容器。一開始初始化爲0,每次循環修改爲‘=’,然後打印當前的數組,因爲0是換行符‘\n’的ascall碼,所以沒次只打印到修改處。然後在回車,但是不換行('\r'),在sleep上一段時間。我們就可以看到容器的動態生長了。


下面來看具體實現:

  1 #include<stdio.h>
  2 #include<string.h>
  3 int main()
  4 {
  5         char str[101]={0};
  6         char arr[4]={'|','/','-','\\'};
  7         int i=0;
  8         for(;i<101;++i)
  9         {
 10                 str[i]='*';
 11                 printf("[%-100s][%c][%d\%]",str,arr[i%4],i%101);
 12                 printf("\r");
 13                 usleep(100000);
 14                 fflush(stdout);
 15         }
 16         printf("\n");
 17         return 0;
 18 }

運行截圖:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章