前言:在我們平時下載電影或者進入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; }
大家可以在自己的機器平台上運行看一下動態效果,由於是動態效果,我在這裡呢,只能把最終截圖分享給大家。