C语言 进度条

                                                              C语言 进度条

一、简述

      记--简单的控制台下载进度条。

二、效果

       Windows:        

       Linux:

C语言 进度条_第1张图片

三、源文件

       processBar.c文件

#include 
#include  //rand(), srand()
#include 

#define ONEMB	(1024*1024)
#define ONEGB	(1024*ONEMB) 

//将bute转化为人类容易区分的单位
int convByteToHumanResult(unsigned int bytes, char* result)
{
	int i;
	char uint[][5] = {"B", "Kb", "MB", "GB", "TB", "PB"};
	double dbBytes = bytes;
	
	if(NULL == result)
	{
		return -1;
	}
		
	for(i=0; dbBytes>=1024.0;i++)
	{
		dbBytes /= 1024.0;
	}

	sprintf(result, "%.2lf%s", dbBytes, uint[i]);
	return i;
}

//显示进度条
void showProcessBar(unsigned int total, unsigned int recv, char* info)
{
	int i;
	float frecv = recv;
	int percent = (int)((frecv/total) * 100);
	char res1[64] = {0};
	char sum1[64] = {0};
	char bar[101] = {0};
	
	for(i=0; i= total1)
		{
			break;
		}
		
		i += rand()%1024;
		
		if(i>total1)
		{
			i = total1;
		}
	}
	
	printf("\nDownload aaa.log finish!\n\n");
	
	printf("Start download CProgram.zip...\n");
	for(i=0;;)
	{
		showProcessBar(total2, i, "download...");
		
		if(i >= total2)
		{
			break;
		}
		
		i += rand()%8192;
		
		if(i>total2)
		{
			i = total2;
		}
	}
	
	printf("\nDownload CProgram.zip finish!\n");
	
	return 0;
}

四、总结

       4.1 回到行首使用 '\r'    printf("\r");

       4.2 擦除一个字符使用退格符'\b',然后用空格覆盖 printf("\b \b");

              注:不能擦除换行符,即只能擦除同一行的字符。

你可能感兴趣的:(C)