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
#include <stdio.h>int main(void) {
FILE *stream
int c,n = 0,filesize
stream = fopen("MYFILE.TXT", "wt")
fprintf(stream, "This is a test\n")
fclose(stream)
stream = fopen("MYFILE.TXT", "r+")
while(n < 4) {
filesize = 0
while((c = fgetc(stream)) != EOF) {
printf("%c",c)
++filesize
}
fseek(stream,-(++filesize),SEEK_CUR)
fseek(stream,0,SEEK_CUR)
++n
}
fclose(stream)
return 0
}
***** fseek(stream,0,SEEK_CUR)*****
这一句很重要(专家说的),用来改变文件的读状态(我也不明白这个状态),在修改数据文件时,这一句貌似废话的话所起的作用更是重要了。
首先得保证文件已经打开,不然会报错。fseek是一种函数
fp :指针
offset:偏移量
seek_set:文件开头
总体意思,将指针移到文件开头,偏移量为“2”(自己设置多少,正后,负前,我设置的意思是移动到后2个字节处)