5.10 标准I/O库_定位流

本文详细介绍了C/C++中用于定位标准I/O流的三种方法:ftell和fseek函数、ftello和fseeko函数以及fgetpos和fsetpos函数。通过实例解释了如何使用这些函数进行文件偏移定位,特别是针对文本文件的特定用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    有三种方法定位标准I/O流。

  • ftell和fseek函数。它们都假定文件的位置可以存放在一个长整型中。
  • ftello和fseeko函数。可以使文件偏移量不必一定使用长整型。它们使用off_t数据类型代替了长整型。
  • fgetpos和fsetpos函数。这两个函数是由ISO C引入的。它们使用一个抽象数据类型fpos_t记录文件的位置。这种数据类型可以定义为记录一个位置所需的长度。
  • #include <stdio.h>
  • long ftell(FILE *fp);

返回值:成功返回当前文件位置指示,出错返回-1L

  • int fseek(FILE *fp, long offset, int whence);

返回值:成功返回0,出错返回非0值

  • void rewind(FILE *fp);

    对于文本文件,它们的文件当前位置可能不以简单的字节偏移量来度量。为了定位一个文本文件,whence一定要是SEEK_SET,而且offset只能有两种值:0(绕回到文件的起始位置),或是对该文件调用ftell所返回的值。使用rewind函数也可将一个流设置到文件的起始位置。

    除了offset的类型off_t而非long以外,ftello函数与ftell相同,fseeko函数与fseek相同。

  • #include <stdio.h>
  • off_t ftello(FILE *fp);

返回值:成功返回当前文件位置指示,出错返回-1

  • int fseeko(FILE *fp, off_t offset, int whence);

返回值:成功返回0,出错返回非0值

  • #include <stdio.h>
  • int fgetpos(FILE *restrict fp, fpos_t *restrict pos);
  • int fsetpos(FILE *restrict fp, const fpos_t *pos);

返回值:成功返回0,出错返回非0值

    fgetpoos将文件位置指示器的当前值存入由pos指向的对象中。在以后调用fsetpos时,可以使用此值将流重新定位至该位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值