自己在学习的过程中,遇到了DEV C++对long 的执行 和 int 相同为 4 无法满足需求的问题
导致在使用
fseek(fp,0,SEEK_END);
len=ftell(fp);
无法获取准确值的问题;
本方法,可以获取文件中,任意2个位置之间的字节数.
主要应用在不知道文件 大小 但是知道offset 偏移量时 求取文件尾部到偏移量之间的文件大小
当 offset = 0;得到文件的全部大小
代码如下:
/*获取文件大小
设计:RedMaple
方法:双指针,头尾定位,地址差值法
data time 2019-8-12 16:30*/
#include <stdio.h>
int main()
{
double len;
FILE *fp,*fq;
char freadfile[100];
printf("要查看大小的文件:");
scanf("%s",freadfile);
fp=fopen(freadfile,"rb");//二进制读 打开文件
//fq=fopen(freadfile,"rb");//二进制读 打开同一文件
fq=fp;
fpos_t posthead;//存储文件指针位置
fpos_t postend;
fseek(fp,0,SEEK_SET);//定位在文件开头
fgetpos(fq,&posthead);//获取指针地址
//printf(" fposstart = %0#x\n",posthead);
fseek(fq,0,SEEK_END);//定位在文件尾部
fgetpos(fq,&postend);//获取指针地址
//printf(" fposend = %0#x\n",postend);
len = postend-posthead;//计算文件大小
printf("文件大小 len = %.0lf\n",len);
}