C语言直接读取FOXBASE的DBF文件
维普资讯
1◇~l 1(Bs I
据 的读取 。
一 、 问题的提出 表 1 DBF文件的文件参数表
FOXBAsE有时在与外界进行数据交换 、提高数据 位置 长度(B) 说明
又 仟 用 但 .尢 M 匕Mu 千 墨 ,再 徂 力 OSH ·古 孵
的处理速度、统计 图形输 出、数据文件的修复、编写 1 1
船 H
MIS生成器以及在脱离了FOXBASE之下获取某数据 2一 ‘ 3 最近一次 DIIF文件 的謦改 日期(年 .月,日)
文件 的结构和数据等等方面 ,都少不了需要其它计算 5—8 ‘ DBF文件记录十技
机语言 (包括 C语言)来实现其数据接 口。本文通过对
9— 10 2 DBF文件 目录 区的长虞
FOXBASE的DBF文件数据存储结构的分析,用C语
l1—12 2 DBF文件记录 的长度 (包括一十记录■除标志)
言实现了对其数据的直接读取。
13—32 20 暴境慑曹
二、DBF文件 的数据存储结构
FOXBASE的 DBF文件 由目录区、数据 区和文件
3、目录区结柬符
结束符三部分组成,其中 目录区又由文件参数、记录中
其值为0DH"。dbaseI中,其后还有一个00H,
字段参数和 目录区结束符所组成 ;数据区又由每条记
FOXBASE和 FOXPR0均 已删除此字节 。
录的记录删除标志和记录 内容所组成。其数据存储结
4、数据区
构可表示如下:
由一条条记录组成,记录与记录之间不夹带任
兰兰童塾l主垦兰墼!:!兰垦!重墼 目录区结束符l记录1I..1记录n I文件结束符 何字符。记录删除标志表示:20H表示该记录未
一 3趣 一 l一 32B— 1....I一 32B一 被删除,2AH表示该记录被删除。
一 — — 32* (m+1)+1(B)
一 — — 目录区 — — I一嚣I.馑..’1=一jB一I1—件臻1E藉一5、文件结束符
表 2 DBF文件字段参数表
位置 长 度 (B) 说 明
注 :(1)m:字段数 l(2)n:记录数 3)j:每条记录长度 l I--10 1