前面介绍的对文件的读/写方式都是顺序读/写,即读/写文件只能从头开始,顺序读/写各个数据。但在实际问题中经常要求只读/写文件中某一指定部分的数据,为了解决这个问题可移动文件内部的位置指针到需要读/写的位置,再进行读/写,这种读/写称为随机读/写。C语言中提供了多个函数实现文件的随机读/写。
1.文件定位
按要求移动位置指针称为文件的定位。移动文件内部位置指针的函数主要有两个,即rewind ()函数和fseek ()函数。
(1)rewind()函数用于使文件指针重返文件的开头,其调用的一般形式为:
该函数无返回值。
(2) fseek ()函数用来移动文件内部位置指针,其调用的一般形式为:
该函数用于移动文件读/写位置指针,一般用于二进制文件。其中,文件指针指向被移动的文件;位移量用来表示移动的字节数,从文件头向文件末尾移动位移量为正,否则位移量为负。要求位移量是long型数据,以便在文件长度大于64KB时不会出错。当用常量表示位移量时,要求在数字末尾加后缀“L”。起始点表示从何处开始计算位移量,规定的起始点有3种情况,即文件的开头、文件指针当前位置和文件末尾。其表示方法如表12-2所示。
表12-2 指针起始位置及其代表符号
例如:fseek(fp, 10L, 1) ;
该函数表示文件中的位置指针从当前位置向文件末尾方向移动10个字节。
2.文件的随机读/写
在移动位置指针之后,即可用前面介绍的任一种读/写函数进行读/写。由于一般是读/写一个数据块,因此常用fread ()和fwrite ()函数。(www.daowen.com)
例12.7 利用随机读/写实现输出当前元素的后继实例。
编写程序:
创建一个名为“eg12_7.c”的新文件,在编辑窗口中输入下面的程序代码。
运行结果:
程序说明:
定义struct student类型的数组stu [ 3]并进行初始化。调用rewind ()函数将文件指针返回到文件头,再调用fseek ()函数把文件指针从文件开头向后移动i * sizeof( struct student)个字节,保证指针指向当前输入序号元素的后继。
3.文件检测函数
C语言中常用的文件检测函数如表12-3所示。
表12-3 文件检测函数
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。