正在加载图片...
还要说明的是 fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往 计算的位置会出现错误 1352文件的随机读写 在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写 个数据据块,因此常用 fread和 fwrite函数。 下面用例题来说明文件的随机读写。 【例13.8】在学生文件stu_list中读出第二个学生的数拒 #inc lude<stdio. h> struct stu char name int num har addr [15] main o FILE *f char ch if((fp=fopen("stu list","rb"))==NULL printf (" cannot open file strike any key exit! " cho exit(1) fseek(fp, i*sizeof (struct stu), 0) fread(qg, sizeof(struct stu), 1, fp) printf("\n\nname\number d dr\n") printf("%s\t%5d %7d %s\n", gg->name, qg->num, gg->age qg>addr) 文件stu_list已由例13.6的程序建立,本程序用随机读出的方法读出第二个学生的数 据。程序中定义boy为stu类型变量,qq为指向boy的指针。以读二进制文件方式打开文件, 程序第22行移动文件位置指针。其中的i值为1,表示从文件头开始,移动一个stu类型的 长度,然后再读出的数据即为第二个学生的数据。还要说明的是 fseek 函数一般用于二进制文件。在文本文件中由于要进行转换,故往往 计算的位置会出现错误。 13.5.2 文件的随机读写 在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写一 个数据据块,因此常用 fread 和 fwrite 函数。 下面用例题来说明文件的随机读写。 【例 13.8】在学生文件 stu_list 中读出第二个学生的数据。 #include<stdio.h> struct stu { char name[10]; int num; int age; char addr[15]; }boy,*qq; main() { FILE *fp; char ch; int i=1; qq=&boy; if((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("\n\nname\tnumber age addr\n"); printf("%s\t%5d %7d %s\n",qq->name,qq->num,qq->age, qq->addr); } 文件 stu_list 已由例 13.6 的程序建立,本程序用随机读出的方法读出第二个学生的数 据。程序中定义 boy 为 stu 类型变量,qq 为指向 boy 的指针。以读二进制文件方式打开文件, 程序第 22 行移动文件位置指针。其中的 i 值为 1,表示从文件头开始,移动一个 stu 类型的 长度,然后再读出的数据即为第二个学生的数据
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有