更新时间:2015-06-25 23:26:33浏览次数:1+次
int fseek( FILE *stream, long offset, int origin );
偏移的起点。起点有三种方式,分别为SEEK_SET(0),SEEK_CUR(1)和SEEK_END(2),依次代表文件起始、文件指针当前位置和文件尾。这三个标志是预先定义的宏,当然你也可以直接传入对应的数。
特别说明:
第二个参数的偏移,就是以这个偏移的起点来计算的,比如SEEK_CUR,那么偏移的就是从当前的文件指针位置偏移,如果当前文件指针位于文件起始位置,第二个参数为负数,那么移动指针后就超出文件起始了。如果当前文件指针位于文件尾,第二个传入正数,那文件指针移动后超出文件尾了。一个是从文件尾向文件头方向越过文件起始位置,另一个就是反着的超出文件尾。但是两种结果不一样。
越过文件起始超出文件,移动文件指针会失败。而越过文件尾超出文件,是可以的,且非常有用。经常使用越过文件尾来扩展文件大小,但是并不是越过文件尾就扩展了文件大小,还需要在越过文件尾后设置文件的文件尾才能是新文件大小生效。C语言中没有直接设置文件尾标志的函数,为了支持C语言扩展文件大小,我们移动指针后,然后在移动后的文件指针位置写入数据即可,那么就写入一个0.后文件大小就生效了。
FILE * pFile = fopen("1.txt","w+");
int i = fseek(pFile,100000000,SEEK_END);
fwrite("2",1,1,pFile);
fclose(pFile);
以上代码也展示了fseek函数的使用。打开文本文件1.txt,以w+方式打开,然后从文件尾开始移动文件指针,最后在新的位置写入一个字符2,然后关闭文件。相关资讯