本文介绍:
主要是发布有关进度条编写的代码。
makefie:
Bar.exe:Bar.h main.c
gcc -o $@ $^
.PHONY:clean
clean:
rm -f Bar.exe
Bar.c:
#include "Bar.h"
#define NUM 102
const char* STYLY = "|/-\\";
char bar[NUM];
void process(int rate)
{
if(rate < 0 || rate > 100) return;
int len = strlen(STYLY);
printf("[%-100s][%d%%][%c\r]", bar, rate, STYLY[rate%len]);
fflush(stdout);
bar[rate++] = BODY;
if(rate < 100) bar[rate] = RIGHT;
}
Bar.h:
#pragma once
#include <stdio.h>
#include <string.h>
#define BODY '-'
#define RIGHT '>'
extern void setting(int time);
main.c:
#include "Bar.h"
#include <unistd.h>
#include "Bar.c"
typedef void (*turn_back)(int);
#define NUM 102
void download(turn_back tb)
{
int total = 1000;
int curr = 0;
while(curr <= total)
{
usleep(50000);
int rate = curr*100 / total;
tb(rate);
curr += 10;
}
printf("\n");
}
int main()
{
download(process);
return 0;
}