读取文件进度条
#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()%100,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("[%6.2f%%]",(float)sum/size*100); Sleep(300);//间隔300毫秒读取一次 } fclose(pf);//关闭文件 //printf("\n%s\n",cont); return 0; }