//C语言新案例-读取文件进度条
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <windows.h>
int main()
{
int size=0;//文件的总大小
int len=0;//当前读取数
char tmp[100];//临时数组,保存当前读取的内容
int sum=0;//已读取的大小
char cont[2048]={0};//保存整个文件内容
int progress=20;//进度条的长度
int current=0;//当时进度
int i;//循环变量
//1.打开文件及关闭文件
FILE* pf = fopen("7_7.c","rb");//打开文件rb:读取二进制方式
if(pf==NULL)//判断文件打开是否正常
{
printf("文件打开失败,程序退出!\n");
return 0;
}
//2.获取文件总大小,及把文件指针设置到文件开头
fseek(pf,0,SEEK_END);//把文件指针放到文件末尾的位置
size=ftell(pf);//得到文件大小,以字节为单位
fseek(pf,0,SEEK_SET);//文件指针设置到文件开头
//3.循环读取文件内容并显示进度
srand((unsigned)time(NULL));//随机种子
while(!feof(pf))//没有到文件结尾时都循环
{
len=fread(tmp,1,rand()pf);//读取随机数量的内容,保存到tmp数组中
tmp[len]='\0';//添加字符串的结束标记
sum+=len;//累加总读取数 sum=sum+len
strcat(cont,tmp);//将tmp数组中的内容附加到cont数组中
//进度条
current=sum/(size/progress);//计算当前的进度
printf("\r");//让光标移动到行首
for(i=0;i<progress;i++)
{
if(i<current)
printf("■");
else
printf("□");
}
printf("[ 0.00%]",(float)sum/size*100);
Sleep(300);//间隔300毫秒读取一次
}
fclose(pf);//关闭文件
//printf("\n\n",cont);
return 0;
}