1. 程式人生 > >【Linux】Linux下進度條的模擬實現

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

前言:

  進度條是什麼?想必打過遊戲或者下載過東西的同學都能有看到過一個載入條形和百分比顯示當前已經載入了多少了。本篇部落格就是實現了這麼個東西。

實現思路分析:

  要實現進度條,主要是在緩衝區裡面做文章。首先先介紹下大致思路。要達到的目的是能夠在螢幕上顯示一個進度條,那麼不難想到使用printf列印一個字串在螢幕上就可以達到目的了。

  但是實現時有很多的細節:

  1.我們要列印個進度條肯定是100%的,所以需要一個能夠剛下100個字元的陣列是必要的,但是需要注意的是要多開闢一個字元放‘\0’,開闢好以後還需要全部初始化成'\0'防止輸出字串的時候出現亂碼。 

  2.最重要的是需要加上printf("\r"),這個是用來只回車不換行,能夠達到的功能是緩衝去裡面的值始終只有一行,不會出現每次要輸出一串字元,這樣就能實現進度條的核心功能了。 


  3.還有一些小的細節,在列印進度條時,需要將兩邊的框固定,所以寫成%100s但是需要加上負號,因為那樣寫是從右邊開始列印的

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main()
{
	int i=0;
	char mod[4]={'-','\\','_','/'};
	char rate[101]={'\0'};
	memset(rate,'\0',101);
	for(i=0;i<100;i++)
	{
		rate[i]= '=';
		printf("[%-100s]%d%% %c",rate,i+1,mod[i%4]);
		printf("\r");
		usleep(100000);
		fflush(stdout);
	}
	printf("\n");
	
	return 0;
}

效果圖: