本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。
运行结果:
下面为显示进度条的函数,通过struct copy_arg结构体传参。其中cp_size(s1)为已经完成的部分,file_size(s2)为需要完成的部分(总大小)
struct copy_arg //定义结构体存储文件描述符
{
int s1;
int s2;
};
void *schedule(void *size_arg) // 显示进度条 函数
{
struct copy_arg *s = size_arg;
double cp_size = s->s1;
double file_size = s->s2;
double num = (cp_size / file_size)*50; //num决定进度条中“>”的个数(0~50)
printf("\r"); //删除上一次输出的内容
printf("复制文件中:[");
for(int i = 0; i < 50; i++)
{
if(i < num) //输出num个">"
printf(">");
else
printf(" "); //其他用空格填充
}
if(num > 49.5) //防止(cp_size / file_size)不能被除尽
num = 50;
printf("]%% %.2f",num*2); //输出完成进度的百分比
}