fseek()函数
fseek()函数
int fseek(FILE *stream, long offset, int fromwhere);fseek 用于二进制方式打开的文件,移动文件读写指针位置.
第一个参数stream为文件指针
第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移,即光标向后移一个单位,换行符占两个单位
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
简言之:
fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
fseek(fp,100L,2);把fp指针退回到离文件结尾100字节处。
应用实例:
1 #include <stdio.h> 2 long filesize(FILE *stream); 3 int main(void) 4 { 5 FILE *stream; 6 stream = fopen("MYFILE.TXT", "w+"); 7 fprintf(stream, "This is a test"); 8 printf("Filesize of MYFILE.TXT is %ld bytes/n", filesize(stream)); 9 fclose(stream); 10 return 0; 11 } 12 long filesize(FILE *stream) 13 { 14 long curpos, length; 15 curpos = ftell(stream); 16 fseek(stream, 0L, SEEK_END); 17 length = ftell(stream); 18 fseek(stream, curpos, SEEK_SET); 19 return length; 20 }