您的位置:

c语言fseek函数怎样用法,c++ fseek函数

本文目录一览:

fseek函数是怎么用的?

fseek函数用于重定位流(数据流/文件)上的文件内部位置指针。

函数原型int

fseek(FILE

*stream,

long

offset,

int

fromwhere);

参数:

stream为文件流的指针

offset

偏移量

fromwhere

起始位置

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

返回值:

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

实例:

#include

stdio.h

long

filesize(FILE*stream);

int

main(void)

{

FILE

*stream;

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

fprintf(stream,"This

is

a

test");

printf("File

size

of

MYFILE.TXT

is

%ld

bytes\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;

}

在C语言中fseek()的功能

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

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

如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。

扩展资料:

注意事项

fseek函数的文件指针,应该为已经打开的文件。如果没有打开的文件,那么将会出现错误。 fseek函数也可以这样理解,相当于在文件当中定位。

这样在读取规律性存储文件时可以利用其OFFSET偏移量读取文件上任意的内容。

fseek函数一般用于二进制文件,也可以用于文本文件。用于文本文件操作时,需特别注意只有fseek(fp, 0, SEEK_SET) 和 fseek(fp, ftell(fp), SEEK_SET)能确保结果符合预期。

参考资料来源:百度百科-fseek

fseek的用法

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

第一个参数file指针

第二个参数移动的偏移量

第三个参数移动到哪里

分别用3个宏

SEEK_SET 既0 文件开头

SEEK_CUR 既1 文件当前位置

SEEK_END 既2 文件结尾

但不推荐用数字 最好用宏

简言之:

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

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

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

此函数常用来计算流的长度:

int filesize = fseek( fp, 0, SEEK_END );

fseek( fp, 0, SEEK_SET );