一个简单的进度条需要两个属性:最大/最小范围和步长。
例如,创建一个范围为0到100的载入进度条,把进度条初始为0,当载入一个资源的时候用单位长度来让进度条前进一个步长。
(1)当进度条前进时,它都会重画自身(也就是每次从最左端开始显示比上一次多一个步长,就有了动态效果),那么就需要执行一次回车,让光标回到最左端;
printf("[%-101s]\r",bar);
(2)为了更清楚的显示进度,加上%
printf("[%-101s][%d%%][%c]\r",bar,rate,labal[rate%4]);
代码:
void proc()
{
char bar[102];
memset(bar, '\0', sizeof(bar));
int rate = 0;
const char* labal = "|/-\\";
while (rate <= 100)
{
bar[rate] = '=';
printf("[%-101s][%d%%][%c]\r", bar, rate, labal[rate % 4]);
++rate;
fflush(stdout);
}
printf("\n");
}