在C语言中fseek()的功能

Python09

在C语言中fseek()的功能,第1张

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

fptr = fopen(roominfo, "rb+")//你的文件是以读写方式打开的

当一个文件以读写方式打开,从读文件切换到写文件或者相反操作,必须刷新文件缓冲区(就是把文件的修改写入磁盘),而fseek操作会引发文件缓冲区的刷新。在你的代码里fwrite以后,下次判断是fread,所以如果不刷新文件缓冲区,fread不会读取到写入的数据,而fseek(fptr, 0,SEEK_CUR)就是在不移动文件指针的情况下,把缓冲区数据写入文件,保证fread会读取到新数据,这是常用手段