Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2070020
  • 博文数量: 909
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 12260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 20:50
文章分类

全部博文(909)

文章存档

2008年(909)

我的朋友

分类:

2008-05-06 22:39:13

一起学习
二进制文件随机存取的两种方法

作者:韩耀旭

下载源代码

以下是本人使用C 实现二进制文件随机存取的两种常用方法,写出来,让您见笑,还望方家点拨。

第一种方法:根据记录编号,对每一条记录固定位置存取,实现随机存取

设计思想:

每一条记录的记录编号,决定该记录的存取位置。如:第一条记录记录编号是1,放在位置1;第二条记录的记录编号是2,放在位置2;………,依次类推。
要修改第二条记录,首先根据记录编号计算出该记录的存储位置,然后将内置指针直接调至此处,进行修改。
新添记录,可根据它的记录编号存储到文件的相应位置。
这种随机存取方法通俗易懂,简便易行。适用于记录条数不多的文件,要求记录编号尽可能连续。其缺点是存储记录不连续,占用空间大。
工程Random1演示了这种方法,建议您先演示工程,在对该工程有一个了解的基础上再阅读代码。代码中已经对与本文相关的语句作了详细说明,您可以非常方便地读懂。

第二种方法:利用链表指针,实现随机操作

设计思想:

对文件进行操作前,先把文件读入内存,做成链表以方便操作,操作完毕后存盘保存。
这种方法由于使用链表指针,对记录的增加、删减都非常方便。
这种方法不需要记录编号,记录存储连续,占用空间小。其缺点是对程序设计人员要求较高,必须对链表指针有一定了解。
工程Random2演示了这种方法,同样建议您先演示工程,在对该工程有一个了解的基础上再阅读代码。

下面对该工程作几点简要说明:

  工程新建了一个类CFileRandom实现文件的随机操作。成员函数add用于增加一个记录;change可以修改一个记录;DescentSort实现降序排列;Display显示所有记录;Read把所有记录调入内存;Remove用于删除一条记录;Save用于将内存中的整个链表存盘保存。
CRandom2Dlg使用CFileRandom类实现具体操作。同样,与本文相关的源码都作了详细说明。

再次感谢您阅读本文,欢迎您批评指正。


下载本文示例代码


二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法二进制文件随机存取的两种方法
阅读(375) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~