fseek函数
作用: 用来设定文件的当前读写位置.
函数原型::int fseek(FILE *fp,long offset,int origin);
函数功能:把fp的文件读写位置指针移到指定的位置
第一个参数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);把文件内部指针移动到离文件开头100字节处;
fseek(fp,100L,1);把文件内部指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);把文件内部指针退回到离文件结尾100字节处。
ftell函数
作用:用来获取文件的当前读写位置;
函数原型: long ftell(FILE *fp)
函数功能:得到流式文件的当前读写位置,其返回值是当前读写位置偏离文件头部的字节数.
例如:
lsize=ftell(fp); 是获取fp指定的文件的当前读写位置,并将其值传给变量lsize
fseek函数与ftell函数综合应用:
分析:可以用fseek函数把位置指针移到文件尾,再用ftell函数获得这时位置指针距文件头的字节数,这个字节数就是文件的长度.
#include <stdio.h>main(){FILE *fp;char filename[80];long length;printf("输入文件名:");gets(filename);//以二进制读文件方式打开文件fp=fopen(filename,"rb");if(fp==NULL)printf("file not found!\n");else{//把文件的位置指针移到文件尾fseek(fp,OL,SEEK_END);//获取文件长度;length=ftell(fp);printf("该文件的长度为%1d字节\n",length);fclose(fp);}}