ftell/ftello、fseek/fseeko、fsetpos/fgetpos、rewind

来源:互联网 发布:张三丰与王重阳知乎 编辑:程序博客网 时间:2024/06/08 05:40

讲解了在标准IO流中position(位置)相关函数

#include <stdio.h>int fseek(FILE *stream, long offset, int whence);//Returns: current file position indicator(指示器) if OK, -1L on errorlong ftell(FILE *stream);//Returns:0 if OK, nonzero on errorvoid rewind(FILE *stream);

fseekftelloffset都是long型的数。

  • 对于二进制文件:whence有三个取值SEEK_SETSEEK_CURSEEK_END
  • 对于文本文件:whence必须为SEEK_SET,offset只能为两个值,0—代表rewind到文件开头,或者使用ftell的返回值

rewindfunction sets the file position indicator for the stream pointed to by stream to the beginning of the file. It is equivalent to:(void) fseek(stream, 0L, SEEK_SET)

fseeko, ftello - seek to or report file position

相对于fseekftell,将offset的类型从long换成off_t

 #include <stdio.h>int fseeko(FILE *stream, off_t offset, int whence);//Returns: current file position indicator if OK, (off_t) -1 on erroroff_t ftello(FILE *stream);//Returns:0 if OK, nonzero on error

回顾3.6节关于off_t的讨论,off_t也可以大于32bits

fgetpos、fsetpos

The fgetpos() and fsetpos() functions are alternate interfaces equivalent to ftell() and fseek() (with whence set to SEEK_SET), setting and storing the current value of the file offset into or from the object referenced by pos.
On some non-UNIX systems, an fpos_t object may be a complex object and these routines may be the only way to portably reposition a text stream.

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

fgetposfile‘s position indicator的当前值存放到pos指向的object中去。
fsetpos相反

0 0
原创粉丝点击