正在加载图片...
fscanf(fp, %s %d %d %s\n", gg->name, &qg->num, &qg->age, qg->addr) printf("\\nname\number age addr\n") printf(%s\t%5d %7d %s\n", gq->name, gg->num, qg->age gq->addr) fclose(fp) 与例10.6相比,本程序中 fscanf和 fprintf函数每次只能读写一个结构数组元素,因 此采用了循环语句来读写全部数组元素。还要注意指针变量pp,qq由于循环改变了它们的值 因此在程序的25和32行分别对它们重新赋予了数组的首地址 135文件的随机读写 前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个 数据。但在实际问题中常要求只读写文件中某一指定的部分。为了解决这个问题可移动文件 内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写 实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。 135.1文件定位 移动文件内部位置指针的函数主要有两个,即 rewind函数和 fseek函数 rewind函数前面已多次使用过,其调用形式为 rewind(文件指针) 它的功能是把文件内部的位置指针移到文件首。 下面主要介绍 fseek函数。 fseek函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针,位移量,起始点) 其中: “文件指针”指向被移动的文件 N位移量〃表示移动的字节数,要求位移量是1ong型数据,以便在文件长度大于64KB时不 会出错。当用常量表示位移量时,要求加后缀"L〃 起始点表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾 其表示方法如下表。 起始点 表示符号 文件首 SEEK SET 当前位置 SEEK CUR 文件末尾 SEEK END 例如 fseek(fp, 100L, 0) 其意义是把位置指针移到离文件首100个字节处。fscanf(fp,"%s %d %d %s\n",qq->name,&qq->num,&qq->age,qq->addr); printf("\n\nname\tnumber age addr\n"); qq=boyb; for(i=0;i<2;i++,qq++) printf("%s\t%5d %7d %s\n",qq->name,qq->num, qq->age, qq->addr); fclose(fp); } 与例 10.6 相比,本程序中 fscanf 和 fprintf 函数每次只能读写一个结构数组元素,因 此采用了循环语句来读写全部数组元素。还要注意指针变量 pp,qq 由于循环改变了它们的值, 因此在程序的 25 和 32 行分别对它们重新赋予了数组的首地址。 13.5 文件的随机读写 前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个 数据。 但在实际问题中常要求只读写文件中某一指定的部分。为了解决这个问题可移动文件 内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。 实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。 13.5.1 文件定位 移动文件内部位置指针的函数主要有两个,即 rewind 函数和 fseek 函数。 rewind 函数前面已多次使用过,其调用形式为: rewind(文件指针); 它的功能是把文件内部的位置指针移到文件首。 下面主要介绍 fseek 函数。 fseek 函数用来移动文件内部位置指针,其调用形式为: fseek(文件指针,位移量,起始点); 其中: “文件指针”指向被移动的文件。 “位移量”表示移动的字节数,要求位移量是 long 型数据,以便在文件长度大于 64KB 时不 会出错。当用常量表示位移量时,要求加后缀“L”。 “起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾。 其表示方法如下表。 起始点 表示符号 数字表示 文件首 SEEK_SET 0 当前位置 SEEK_CUR 1 文件末尾 SEEK_END 2 例如: fseek(fp,100L,0); 其意义是把位置指针移到离文件首 100 个字节处
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有