C语言新案例-读取文件进度条-pf文件

C语言新案例-读取文件进度条-pf文件

//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;

}

推荐阅读