1、LOGOLOGO掌握文件定位函数rewind、fseek、ftell函数Teacher teaching designCONTENTS 目 录文件定位函数文件检测函数案例分析仿真演练文件定位函数移动文件内部位置指针的函数主要有两个即 rewind 函数和fseek函数PART 01把文件内部的位置指针移到文件首。并清除文件结束标志和出错标志功能int rewind(FILE*fp);或int rewind(文件指针);调用形式如果函数调用成功返回0,否则返回非0值。返回值rewind函数int fseek(文件指针,位移量,起始点);或int fseek(FILE*fp,long offset
2、,int fromwhere);调用形式功能用来移动文件内部位置指针fseek函数表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。“起始点”指向被移动的文件。“文件指针”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。“位移量”fseek函数例如:fseek(fp,100L,0);其意义是把位置指针移到离文件首100个字节处。起始点fseek函数fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误。返回文件指针的位置,若出错则返回1L。返回值3long ft
3、ell(FILE*fp);调用形式1返回当前文件指针的位置。这个位置是指当前文件指针相对于文件开头的位移量。功能2ftell函数#include int main(void)FILE*fp;fp=fopen(test.txt,w+);/*按照格式要求将字符串写入文件*/fprintf(fp,This is a test);/*读出文件指针fp的位置*/printf(The file pointer is at byte%ldn,ftell(fp);fclose(fp);return 0;举例感知ftelll函数本题中ftell函数的返回值实际上就是该文件的长度。在实际的应用中,函数ftell常
4、用来计算文件的长度。文件检测函数PART 02判断文件是否处于文件结束位置,功能2如文件结束,则返回值为1,否则为0。返回值3feof(文件指针);调用格式1文件结束检测函数ferror(文件指针);调用格式检查文件在用各种输入输出函数进行读写时是否出错功能如未出错返回值为0,否则表示有错。返回值读写文件出错检测函数用于清除出错标志,并使文件结束标志为0功能1它没有返回值,也未定义任何错误。可以通过使用它从文件流的错误状态中恢复clearerr(文件指针);调用格式clearerr函数案例分析 交流提升PART 03main()FILE*fp;char ch;int i=1;qq=&boy;i
5、f(fp=fopen(stu_list,rb)=NULL)printf(Cannot open file strike any key exit!);getch();exit(1);rewind(fp);fseek(fp,i*sizeof(struct stu),0);fread(qq,sizeof(struct stu),1,fp);printf(nnnametnumber age addrn);printf(%st%5d%7d%sn,qq-name,qq-num,qq-age,qq-addr);主函数struct stu char name10;int num,age;char addr1
6、5;boy,*qq;在学生文件stu_list中读出第二个学生的数据。案例分析结构体的定义仿真演练体验探索PART 041、以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE *myf;ling f1;myf=_(“test.t”,“rb”);fseek(myf,0,SEEK_END);f1=ftel(myf);fclose(myf);printf(“%dn”,f1);仿真演练有以下程序运行后的输出结果是()#include main()FILE*fp;int i,k,n;fp=fopen(“data.dat”,“w+”);for(i=1;i6;i+)fprintf(fp,”%d “,i);if(i%3=0)fprintf(fp,”n”);rewind(fp);fscanf(fp,“%d%d”,&k,&n);printf(“%d%dn”,k,n);fclose(fp);A)0 0 B)123 45 C)1 4 D)1 2仿真演练LOGOLOGOTeacher teaching design