fseek(fseek(fp,0,SEEK

更新时间:2023-03-01 00:39:04 阅读: 评论:0

fek函数的用法是什么?

fek函数用于重定位流(数据流/文件)上的文件内部位置指针。

函数原型int fek(FILE *stream, long offt, int fromwhere);

参数:

stream为文件流的指针

offt 偏移量

fromwhere 起始位置

具体功能:如果执行成功,stream将指向以fromwhere(起始位置:文件头0(SEEK_SET),当前位置1(SEEK_CUR),文件尾2(SEEK_END))为基准,偏移offt(指针偏移量)个字节的位置。如果执行失败(比如offt超过文件自身大小),则不改变stream指向的位置。

扩展资料:

int fek(FILE *stream, long offt, int fromwhere);

第一个参数file指针

第二个参数移动的偏移量

第三个参数移动到哪里

分别用3个宏

SEEK_SET 既0 文件开头

SEEK_CUR 既1 文件当前位置

SEEK_END 既2 文件结尾

但不推荐用数字 最好用宏

参考资料来源:百度百科-fek


在C语言中fek()的功能

fek()是重定位流(数据流/文件)上的文件内部位置指针。

注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变或指向别的文件。

如果执行成功,stream将指向以fromwhere为基准,偏移offt(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offt取值大于等于2*1024*1024*1024,即long的正数范围2G),则不改变stream指向的位置,函数返回一个非0值。



扩展资料:

注意事项

fek函数的文件指针,应该为已经打开的文件。如果没有打开的文件,那么将会出现错误。 fek函数也可以这样理解,相当于在文件当中定位。

这样在读取规律性存储文件时可以利用其OFFSET偏移量读取文件上任意的内容。

fek函数一般用于二进制文件,也可以用于文本文件。用于文本文件操作时,需特别注意只有fek(fp, 0, SEEK_SET) 和 fek(fp, ftell(fp), SEEK_SET)能确保结果符合预期。


参考资料来源:百度百科-fek




fek函数

  fek函数:
  int fek(FILE *stream, long offt, int fromwhere);函数设置文件指针stream的位置。
  如果执行成功,stream将指向以fromwhere为基准,偏移offt(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offt超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。
  实验得出,超出文件末尾位置,还是返回0。往回偏移超出首位置,返回-1,且指向一个-1的位置,请小心使用。
  fek函数和lek函数类似,但lek返回的是一个off_t数值,而fek返回的是一个整型。
  功能:

  重定位流(数据流/文件)上的文件内部位置指针。
  注意:文件指针指向文件/流。位置指针指向文件内部的字节位置,随着文件的读取会移动,文件指针如果不重新赋值将不会改变指向别的文件。
  程序例:

  #include <stdio.h>
  long filesize(FILE*stream);
  int main(void)
  {
  FILE *stream;
  stream=fopen("MYFILE.TXT","w+");
  fprintf(stream,"Thisisatest");
  printf("FilesizeofMYFILE.TXTis%ldbytes\n",filesize(stream));
  fclo(stream);
  return 0;
  }
  
  long filesize(FILE*stream)
  {
  long curpos,length;
  curpos=ftell(stream);
  fek(stream,0L,SEEK_END);
  length=ftell(stream);
  fek(stream,curpos,SEEK_SET);
  return length;
  }
  

  int fek( FILE *stream, long offt, int origin );
  第一个参数stream为文件指针
  第二个参数offt为偏移量,正数表示正向偏移,负数表示负向偏移
  第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
  SEEK_SET: 文件开头
  SEEK_CUR: 当前位置
  SEEK_END: 文件结尾
  其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.
  简言之:
  fek(fp,100L,0);把文件内部指针移动到离文件开头100字节处;
  fek(fp,100L,1);把文件内部指针移动到离文件当前位置100字节处;
  fek(fp,-100L,2);把文件内部指针退回到离文件结尾100字节处。
  使用实例:
  #include<stdio.h>
  #defineN5
  typedefstructstudent{
  longsno;
  charname[10];
  floatscore[3];
  }STU;
  
  voidfun(char*filename,STUn)
  {
  FILE*fp;
  fp=fopen(filename,"rb+");
  fek(fp,-1L*sizeof(STU),SEEK_END);
  fwrite(&n,sizeof(STU),1,fp);
  fclo(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);
  fclo(fp);
  fp=fopen("student.dat","rb");
  fread(ss,sizeof(STU),N,fp);
  fclo(fp);
  printf("\nTheoriginaldata:\n\n");
  for(j=0;j<N;j++)
  {
  printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);
  for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);
  printf("\n");
  }
  fun("student.dat",n);
  printf("\nThedataaftermodifing:\n\n");
  fp=fopen("student.dat","rb");
  fread(ss,sizeof(STU),N,fp);
  fclo(fp);
  for(j=0;j<N;j++)
  {
  printf("\nNo:%ldName:%-8sScores:",ss[j].sno,ss[j].name);
  for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);
  printf("\n");
  }
  }
  

fek()函数

  int fek(FILE *stream, long offt, int fromwhere);fek 用于二进制方式打开的文件,移动文件读写指针位置.
fek(in,-1L,1); -- 文件流in, 零点为当前指针位置,SEEK_CUR 就是 1, -1L -- 文件指针回退1个字节int fek( FILE *stream, long offt, int origin );
第一个参数stream为文件指针
第二个参数offt为偏移量,整数表示正向偏移,负数表示负向偏移
第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
  SEEK_END: 文件结尾
  其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
  简言之:
  fek(fp,100L,0);把fp指针移动到离文件开头100字节处;
  fek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
 fek(fp,100L,2);把fp指针退回到离文件结尾100字节处

fek函数,文件指针定位

fek(fp1,m,1);把文件内部指针移动到离文件开头m字节处
第二个参数m偏移量,第三个参数1表示当前位置
它表示偏移量,如果m超过1行的长度,只会回到行首,你要将文件指针fp1上移两行不能用这个函数

fek,是用于二进制方式打开的文件,移动文件读写指针位置,通常文件打开后,读写位置按先后顺序。fek函数是设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offt(指针偏移量)个字节的位置。如果执行失败(比如offt超过文件自身大小),则不改变stream指向的位置。fek函数和lek函数类似,但lek返回的是一个off_t数值,而fek返回的是一个整型。

fek的用法

int fek(FILE *stream, long offt, int fromwhere);
第一个参数file指针
第二个参数移动的偏移量
第三个参数移动到哪里
分别用3个宏
SEEK_SET 既0 文件开头
SEEK_CUR 既1 文件当前位置
SEEK_END 既2 文件结尾
但不推荐用数字 最好用宏

简言之:
fek(fp,100L,SEEK_SET);把fp指针移动到离文件开头100字节处;
fek(fp,100L,SEEK_CUR);把fp指针移动到离文件当前位置100字节处;
fek(fp,100L,SEEK_END);把fp指针退回到离文件结尾100字节处。
此函数常用来计算流的长度:
int filesize = fek( fp, 0, SEEK_END );
fek( fp, 0, SEEK_SET );

本文发布于:2023-02-28 19:11:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167760234455624.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:fseek(fseek(fp,0,SEEK.doc

本文 PDF 下载地址:fseek(fseek(fp,0,SEEK.pdf

标签:fseek   fp   SEEK
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|