A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gd32376300 中级黑马   /  2015-12-14 00:00  /  842 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

前面介绍的对文件的读写方式都是顺序读写,即读写文件只能从头开始,顺序读写各个数据。但 在实际问题中常要求只读写文件中某一指定的部分。为了解决这个问题可移动文件内部的位置 指针到需要读写的位置,再进行读写,这种读写称为随机读写。 实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。
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个字节处。
还要说明的是fseek函数一般用于二进制文件。在文本文件中由于要进行转换,故往往计算的位 置 会出现错误。
2、文件的随机读写
在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写一个数据 据 块,因此常用fread和fwriy'te函数。下面用例题来说明文件的随机读写。 读取学生信息的.data文件,读取第二个学生的信息:

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马