使用文件读写指针获取文件长度

使用文件读写指针获取文件长度

我们会用到lseek系统调用, 来移动文件读写指针.

       man lseek # 在shell中使用该命令获取函数的信息, 如下
       
       #include <sys/types.h>
       #include <unistd.h>
       off_t lseek(int fd, off_t offset, int whence);

具体的操作流程如下

  1. 调用lseek并将其的第二个参数offset和第三个参数whence分别设置为__0__与__SEEK_END__, 将文件读写指针移动到文件的结尾处
  2. 同上, 第二次调用lseek, 只是whence设置为__SEEK_CUR__; 并将计算返回的偏移量赋值给len(实际在这里目的已经达成, 即获取到了文件的长度)
  3. 第三次调用lseek, 把whence设置为__SEEK_SET__, 将读写指针移动回文件开始处
offset: 0, whence: SEEK_END
返回文件指针位置
offset: 0, whence: SEEK_CUR
返回文件指针位置
offset: 0, whence: SEEK_SET
调用lseek
将文件读写指针移动到文件结尾处
调用lseek
获取文件长度并赋值给len
调用lseek
将文件读写指针移动回文件开始处

实例:

int len;
	/*获取文件长度并保持文件读写指针在文件开始处*/
	if (lseek(fd, 0, SEEK_END) == -1) {
		my_err("lseek", __LINE__);
		/* __LINE__ 是一个预定义宏,表示当前代码所在的行号,用于获取错误发生的位置 */
	}
	if ((len = lseek(fd, 0, SEEK_CUR)) == -1) { // 前一个lseek调用已经将读写指针指向文件末尾
		my_err("lseek", __LINE__);
	}
	if ((lseek(fd, 0, SEEK_SET)) == -1) { // 指向文件开头
		my_err("lseek", __LINE__);
	}
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值