第十一章 文件操作_C语言获取文件大小(长度)

本文介绍了在C语言中如何利用ftell()函数获取文件大小。通过先将文件指针移动到文件末尾,再使用ftell()获取与文件开头的距离来确定文件大小。然而,这种方法会改变文件指针位置,需要使用fgetpos()和fsetpos()恢复原始位置以避免影响后续操作。

实际开发中,有时候需要先获取文件大小再进行下一步操作。C语言没有提供获取文件大小的函数,要想实现该功能,必须自己编写函数。

ftell()函数

ftell() 函数用来获取文件内部指针(位置指针)距离文件开头的字节数,它的原型为:

long int ftell ( FILE * fp );

注意:fp 要以二进制方式打开,如果以文本方式打开,函数的返回值可能没有意义。

先使用 fseek() 将文件内部指针定位到文件末尾,再使用 ftell() 返回内部指针距离文件开头的字节数,这个返回值就等于文件的大小。请看下面的代码:

这段代码并不完美,它移动了文件内部指针,可能会导致接下来的文件操作错误。例如:

long size = fsize(fp); 
fread(buffer, 1, 1, fp);

fread() 函数将永远读取不到内容。

所以,获取到文件大小后还需要恢复文件内部指针,请看下面的代码:

fpos_t 是在 stdio.h 中定义的结构体,用来保存文件的内部指针。fgetpos() 用来获取文件内部指针,fsetpos()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值