歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 【Linux】Linux系統下進度條的模擬實現

【Linux】Linux系統下進度條的模擬實現

日期:2017/3/3 12:07:52   编辑:Linux技術

前言:在我們平時下載電影或者進入Centos平台下肯定都見過一個描述的當前進度的標識,----這就是一個進度條

本篇blog,我就來講講我的實現。

實現思路:(1)進度條是從0-100%,開辟一個長度為101的字符數組,最後一個放\0,每次往前走一個我就打印一個=這個符號,形象地展示此時的進度。

(2)要借助緩沖區,每次從緩沖區取字符數組,利用\r(只回車不換行),只回車不換行的意思就是:每次接著在這一行打印,如果換行的話,那效果就是:第1行打印一個=,第2行打印==,類似……所以,我們在這裡選擇只回車不換行功能的\r,(注意轉義字符)。

(3)在C語言中,格式輸出中,我利用了

<span > printf("[%-100s] %d %% %c",rate,i+1,move[i%4]);  </span>
[%-100s],意思是:打印時可以將右方括號]固定位置在100位置處,負號的原因是:從左往右打印。

(4)為方便大家看此時是正在進行,還是由於網絡等原因,進度卡了。我在這裡利用了:

<span >   char move[5]="-\\|/";  </span>
來簡易實現一個順時針的球(若大家認為實現的不美觀,不要見笑,

)。

代碼如下:

#include <stdio.h>  
    #include "string.h"  
      
    int main()  
    {  
        int i=0;  
        char move[5]="-\\|/";  
        char arr[101]; 
        memset(arr,'\0',sizeof(arr)/sizeof(arr[0]));  
        while(i<100)  
        {  
            arr[i]= '=';  
            printf("[%-100s] %d %% %c",rate,i+1,move[i%4]);  
            printf("\r");  
            usleep(100000);  
            fflush(stdout);  
	    i++;
        }  
        printf("\n");  
          
        return 0;  
    }

大家可以在自己的機器平台上運行看一下動態效果,由於是動態效果,我在這裡呢,只能把最終截圖分享給大家。

Copyright © Linux教程網 All Rights Reserved