C语言 获取文件大小 (通用,无大小限制)

自己在学习的过程中,遇到了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);	
} 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值