您的位置:

c语言fseek_cur,c语言fseek使用时的文件头尾有存放东西吗

本文目录一览:

C语言 文件指针 fseek

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

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

在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

C语言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); *****

这一句很重要(专家说的),用来改变文件的读状态(我也不明白这个状态),在修改数据文件时,这一句貌似废话的话所起的作用更是重要了。