首页 理论教育 C语言程序设计基础教程:实现随机读写文件

C语言程序设计基础教程:实现随机读写文件

时间:2023-10-27 理论教育 版权反馈
【摘要】:但在实际问题中常要求只读写文件中某一指定的部分。实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。“起始点”表示从何处开始计算位移量,规定的起始点有3 种:文件首、当前位置和文件尾。其表示方法见表9.2。表9.2fseek 函数起始点方法例如:fseek;其意义是把位置指针移到离文件首100 个字节处。图9.7例9.7 程序运行结果本程序用随机读出的方法读出第二个学生的数据。

C语言程序设计基础教程:实现随机读写文件

任务描述

前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个数据。但在实际问题中常要求只读写文件中某一指定的部分。为了解决这个问题可移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。

实现随机读写的关键是要按要求移动位置指针,这称为文件的定位

知识学习

(1)文件定位

移动文件内部位置指针的函数主要有两个,即rewind 函数和fseek 函数。

rewind 函数前面已多次使用,其调用形式为:

rewind(文件指针);

它的功能是把文件内部的位置指针移到文件首。

fseek 函数用来移动文件内部位置指针,其调用形式为:

fseek(文件指针,位移量,起始点);

其中:

“文件指针”指向被移动的文件。

“位移量”表示移动的字节数,要求位移量是long 型数据,以便在文件长度大于64 KB 时不会出错。当用常量表示位移量时,要求加后缀“L”。

“起始点”表示从何处开始计算位移量,规定的起始点有3 种:文件首、当前位置和文件尾。

其表示方法见表9.2。(www.xing528.com)

表9.2 fseek 函数起始点方法

例如:

fseek(fp,100L,0);

其意义是把位置指针移到离文件首100 个字节处。

还要说明的是fseek 函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位置会出现错误

(2)文件的随机读写

在移动位置指针之后,即可用前面介绍的任意一种读写函数进行读写。由于一般是读写一个数据块,因此常用fread 和fwrite 函数。

例9.7 从例9.5 的a.txt 文件中读出第二个学生的数据。

图9.7 例9.7 程序运行结果

本程序用随机读出的方法读出第二个学生的数据。程序中定义boy 为stu 类型变量,qq为指向boy 的指针,以读二进制文件方式打开文件。其中的i 值为1,表示从文件头开始,移动一个stu 类型的长度,然后再读出的数据即为第二个学生的数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈