欢迎访问服务百科信息网!
首页 >科技 >fseek
fseek

fseek

(函数设置文件指针stream的位置)
int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。
fseek资料
  • 外文名:fseek
  • 注意:不是定位文件指针
  • 类型:函数
  • 领域:计算机
  • 功 能

    重定位流(数据流/文件)上的文件内部位置指针

    注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变或指向别的文件。

    头文件

    #include

    用 法

    int fseek(FILE *stream, long offset, int fromwhere);

    描 述

    函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere(偏移起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offset(指针偏移量)个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。

    fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。

    返回值

    成功,返回0,失败返回-1,并设置error的值,可以用perror()函数输出错误。

    fseek position the file(文件) position(位置) pointer(指针) for the file referenced by stream to the byte location calculated by offset.

    程序例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    #include 

    long filesize(FILE*stream);

    int main(void)

    {

    FILE *stream;

    stream=fopen("MYFILE.TXT","wb+");

    fprintf(stream,"Thisisatest");

    printf("FilesizeofMYFILE.TXTis%ldbytes\n",filesize(stream));

    fclose(stream);

    return 0;

    }

     

    long filesize(FILE*stream)

    {

    long curpos,length;

    curpos=ftell(stream);

    fseek(stream,0L,SEEK_END);

    length=ftell(stream);

    fseek(stream,curpos,SEEK_SET);

    return length;

    }

    int fseek( FILE *stream, long offset, int origin );

    第一个参数stream为文件指针

    第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移

    第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET

    SEEK_SET:文件开头

    SEEK_CUR:当前位置

    SEEK_END:文件结尾

    其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.

    简言之:

    fseek(fp,100L,0);把stream指针移动到离文件开头100字节处;

    fseek(fp,100L,1);把stream指针移动到离文件当前位置100字节处;

    fseek(fp,-100L,2);把stream指针退回到离文件结尾100字节处。

    使用实例:

    注意事项

    fseek函数的文件指针,应该为已经打开的文件。如果没有打开的文件,那么将会出现错误。 fseek函数也可以这样理解,相当于在文件当中定位。这样在读取规律性存储文件时可以利用其OFFSET偏移量读取文件上任意的内容。

    fseek函数一般用于二进制文件,也可以用于文本文件。用于文本文件操作时,需特别注意回车换行的情况:因为在一般浏览工具如UltraEdit中,回车换行视为两个字符0x0D和0x0A,但真实的文件读写和定位时却按照一个字符0x0A进行处理,因此碰到此类问题时,可以考虑将文件整个读入内存,然后在内存中手工插入0x0D的方法,这样可以达到较好的处理效果。

  • 上一篇百科:镀锡铜
  • 下一篇百科:fflush