您的位置首页生活百科

fseek函数

fseek函数

的有关信息介绍如下:

fseek函数

fseek函数:  int fseek(FILE *stream, long offset, int fromwhere);函数设置文件指针stream的位置。  如果执行成功,stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。  实验得出,超出文件末尾位置,还是返回0。往回偏移超出首位置,返回-1,且指向一个-1的位置,请小心使用。  fseek函数和lseek函数类似,但lseek返回的是一个off_t数值,而fseek返回的是一个整型。  功能:  重定位流(数据流/文件)上的文件内部位置指针。  注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。  程序例:  #include   long filesize(FILE*stream);  int main(void)  {  FILE *stream;  stream=fopen("MYFILE.TXT","w+");  fprintf(stream,"Thisisatest");  printf("FilesizeofMYFILE.TXTis%ldbytes\n",filesize(stream));  fclose(stream);  return 0;  }    long filesize(FILE*stream)  {  long curpos,length;  curpos=ftell(stream);  fseek(stream,0L,SEEK_END);  length=ftell(stream);  fseek(stream,curpos,SEEK_SET);  return length;  }    int fseek( FILE *stream, long offset, int origin );  第一个参数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字节处。  使用实例:  #include  #defineN5  typedefstructstudent{  longsno;  charname[10];  floatscore[3];  }STU;    voidfun(char*filename,STUn)  {  FILE*fp;  fp=fopen(filename,"rb+");  fseek(fp,-1L*sizeof(STU),SEEK_END);  fwrite(&n,sizeof(STU),1,fp);  fclose(fp);  }    voidmain()/*修改覆盖最后一个学生数据*/  {  STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},  {10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},  {10005,"ZhangSan",95,80,88}};  STUn={10006,"ZhaoSi",55,70,68},ss[N];  inti,j;FILE*fp;  fp=fopen("student.dat","wb");  fwrite(t,sizeof(STU),N,fp);  fclose(fp);  fp=fopen("student.dat","rb");  fread(ss,sizeof(STU),N,fp);  fclose(fp);  printf("\nTheoriginaldata:\n\n");  for(j=0;j