易截截图软件、单文件、免安装、纯绿色、仅160KB

如何利用Pro*C直接读取dbf文件

原帖地址:http://blog.csdn.net/Zerosir/archive/2004/10/02/123663.aspx
为了使用C语言编程直接读取dbf文件,需要了解dbf文件的二进制文件格式,下面给出简要的说明。
表文件由头记录及数据记录组成。头记录定义该表的结构并包含与表相关的其他信息。头记录由文件位置 0 开始。数据记录1紧接在头记录之后(连续的字节),包含字段中实际的文本。
记录的长度(以字节为单位)等于所有字段定义的长度之和。表文件中存储整数时低位字节在前。
1.表头记录的结构:

字节偏移 说明
0 文件类型
0x02FoxBASE
0x03FoxBASE+/dBASE III PLUS,无备注
0x30Visual FoxPro
0x43dBASE IV SQL 表文件,无备注
0x63dBASE IV SQL 系统文件,无备注
0x83FoxBASE+/dBASE III PLUS,有备注
0x8BdBASE IV 有备注
0xCBdBASE IV SQL 表文件,有备注
0xF5FoxPro 2.x(或更早版本)有备注
0xFBFoxBASE
1 - 3 最近一次更新的时间(YYMMDD)
4 - 7 文件中的记录数目
8 - 9 第一个数据记录的位置
10 - 11 每个数据记录的长度(包括删除标记)
12 - 27 保留
28 表的标记
0x01具有 .cdx 结构的文件
0x02文件包含备注。
0x04文件是数据库(.dbc)
请注意,这个字节可以包含任何上面值的和。例如,0x03 表明表具有结构化.cdx和一个备注字段。
29 代码页标记
30 - 31 保留,包含 0x00
32 - n 字段子记录
字段的数目决定了字段子记录的数目。表中每个字段都对应一个字段子记录。
n+1 头记录终止符(0x0D),n+2 到 n+264 此范围内的 263 个字节包含后链信息(相关数据库 (.dbc) 的相对路径)。如果第一个字节为 0x00,则该文件不与数据库关联。因此数据库文件本身总是包含 0x00。
1 头记录中的第 8 到第 9
个字节指示数据文件中数据的起始位置。数据记录从 除标记字节开始。如果此字节为 ASCII 空格 (0x20),该记录没有删除标记,
如果第一字节为星号 (0x2A),该记录有删除标记。在标记之后是字段记录中所命名各字段中的数据
2.字段子记录结构
字节偏移 说明
0 - 10 字段名(最多 10 个字符 -若少于 10 则用空字符 (0x00) 填充)
11 字段类型
C-字符型
Y-货币型
N-数值型
F-浮点型
D-日期型
T-日期时间型
B-双精度型
I-整型
L-逻辑型
M-备注型
G-通用型
C-字符型(二进制)
M-备注型(二进制)
P-图片型
12 - 15 记录中该字段的偏移量
16 字段长度(以字节为单位)
17 小数位数


相关文档:

C/C++/VC 实现字符串逆转的多种方法

/加了下面两个头文件,是为了在Win32工程中使用MFC的特性!
#include <afx.h>
#include <afxwin.h>
#include "stdio.h"
#include "conio.h"
////加了下面两句,是为了能够用string(basic_string类型)
#include <string>
using namespace std;
int main(int argc, char* argv[ ......

语言喜爱程度:C > C++ > C#

曾经认为,学好C语言打遍天下无敌手。 后来发现为了面向对象,不得不用C++,后来发现面向对象果然是非常伟大的思想! 再后来,从VS6.0这个版本之后,VC就已经没有什么太大的变化了,MFC等等都已经稳定下来了,微软不玩了,微软跑到.net平台上面去玩了!!微软一些新的应用,全部都跑到.net平台上去了,VC平台个人觉得就剩 ......

【C】移位操作 处理乘法

今天在douban上面看到了一个帖子,里面关于乘法问题大家讨论了一下
http://www.douban.com/group/topic/8384097/
看到移位做乘法也不是第一次了,但是很诧异真的会在用,自己水平还就差了那么一点点,无可否认,我们处理器的ALU做移位是相当高效的。
这里记录一下里面的一个移位乘法例子。
#include <stdio.h>
# ......

C/C++基本编程技能【转】

一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n
与“零值”比较的 if 语句为:
if ( n == 0 )
if ( n != 0 )
以此类推。
请写出 BOOL flag 与“零值”比较的 if ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号