读取文件进度条

作者在 2018-02-10 00:23:37 发布以下内容

#include <stdio.h>
#include <time.h>
#include <string.h>
#include <windows.h>
int main()
{
int size = 0;   //文件的总大小 
char tmp[100];  //临时数组,保存当前读取的内容
int len = 0;    //当前读取数
int sum = 0;    //已读取的大小
char content[3068] = {0};//保存文件内容
int progress = 20; //进度条的长度设置为20
int current = 0; //当前进度
int i;              //循环变量
//1.打开文件及关闭文件
FILE* pf = NULL;    //文件指针
pf = fopen("8_22.c","rb");//以读的方式打开文件
if(pf==NULL)//判断文件是否打开正常
{
printf("文件打开失败,程序退出!\n");
return -1;//返回-1是表示出错的意思
}
//2.获取文件总大小,及把文件指针设置到文件起始处
fseek(pf,0,SEEK_END);//把文件指针放到文件末尾位置
size = ftell(pf);    //得到文件大小,以字节为单位
fseek(pf,0,SEEK_SET);//文件指针设置到文件起始处
srand((unsigned)time(NULL));//随机种子
while(!feof(pf))//非文件结尾,循环读取文件内容并显示进度
{
len = fread(tmp,1,rand() % 100,pf);//读取随机数量的内容,保存在tmp数组中
tmp[len] = '\0'; //添加字符串的结束标记
sum += len;      //累加总读取数 sum = sum + len;
strcat(content,tmp);//将tmp数组中的内容附加到content数组中
//进度条
current = sum/(size/progress);//计算当前进度
printf("\r");//让光标移动到行首
for(i=0;i<progress;i++)
{
if(i<current)
printf("■");
else
printf("□");
}
printf("[%6.2f%%]",(float)sum / size*100);
Sleep(300);
}
//显示文件内容
//printf("\n%s\n", content);
fclose(pf);//关闭文件
return 0;
}

C | 阅读 1134 次
文章评论,共0条
游客请输入验证码
最新评论