fseek函数用法详解
fseek函数简介
- 头文件包含
#include <stdio.h>
- 函数定义
int fseek(FILE * stream , long offset , int whence );
long ftell(FILE * stream );
void rewind(FILE * stream );
int fgetpos(FILE * stream , fpos_t * pos );
int fsetpos(FILE * stream , const fpos_t * pos );
fseek函数常见使用错误
- 编译错误
warning: implicit declaration of function ‘fseek’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <stdio.h>
fseek函数详细描述
fseek ()函数为stream 指向的流设置文件位置指示符。如果whence被设置为SEEK_SET 、SEEK_CUR 或SEEK_END ,则通过将offset字节添加到whence 指定的位置来获得新位置(以字节为单位)。偏移量分别相对于文件的开始、当前位置指示符或文件的结束。成功调用fseek ()函数将清除流的文件结束指示符,并撤消ungetc (3)函数对同一流的任何影响。
ftell ()函数获取stream 指向的流的文件位置指示符的当前值
rewind ()函数将stream指向的流的文件位置指示器设置为文件的开头。它相当于:
.rs(void)fseek(stream,0L,SEEK_SET).re
除了流的错误指示符也被清除(请参见clearerr (3))
fgetpos ()和fsetpos ()函数是与ftell ()和fseek ()等效的替代接口(在某些非UNIX系统上,将whence设置为SEEK_SET )设置并存储pos 引用的对象中的文件偏移量的当前值,fpos_t对象可能是一个复杂的对象,这些例程可能是可移植地重新定位文本流的唯一方法)。
fseek函数返回值
rewind ()函数不返回值。成功完成后,fgetpos () fseek () fsetpos ()返回0,而ftell ()返回当前偏移量。否则,返回-1并设置errno以指示错误。
fseek函数错误码
- EINVAL fseek ()的whence参数不是SEEK_SET 、SEEK_END 或SEEK_CUR ,或者:结果文件偏移量为负值。
- ESPIPE stream底层的文件描述符是不可查找的(例如,它指的是管道、FIFO或套接字)。
函数fgetpos (),fseek (),fsetpos ()和ftell ()也可能失败,并为例程fflush (3),fstat (2),lseek (2)和malloc (3)指定的任何错误设置errno
评论区