求助C语言.dat数据文件和.idx索引

pljstoneman 2009-08-05 03:50:10
生成数据文件*.dat,*.idx.
dat文件存放实际数据,idx文件中存放某一条数据在对应的dat文件中的位置


Dat文件格式如下:

文件头:8个字节,前4个字节为版本号,之后4个字节为文件创建时间

字段声明:
循环[有多少个字段就有多少个声明]

第一个字节为字段名称长度,第2个字节开始是该长度所确定的字段名称,必须为可见char类型。之后一个字节是该字段的类型编码,再2个字节是该字段的长度。如果是0x00,0x00则表示该字段为变长类型。


数据:
表示字段声明中声明的数据,定长类型的长度可知,依次驱除,变长类型的前2个字节表示变长的长度,后面该字段的数据表示该字段内容。




idx文件格式:

文件头:8个字节,前4个字节为版本号,之后4个字节为文件创建时间

字段声明:(索引)
循环[有多少个字段就有多少个声明]

第一个字节为字段名称长度,第2个字节开始是该长度所确定的字段名称,必须为可见char类型。之后一个字节是该字段的类型编码,再2个字节是该字段的长度。如果是0x00,0x00则表示该字段为变长类型。



数据:
表示字段声明中声明的数据,定长类型的长度可知,依次驱除,变长类型的前2个字节表示变长的长度,后面该字段的数据表示该字段内容,再4个字节表示该行记录在对应的dat文件中的位置。



写程序,实现按照数据的要求,生成以上2种文件,并且能够新增,删除,更新记录。
可以根据idx文件中的字段去查找在dat文件中该行的所有数据。



我一开始用结构存放各数据但是有内存对齐问题,请问我应该用什么格式来写呢?
...全文
999 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wujie9047 2010-03-30
  • 打赏
  • 举报
回复
DAT的那堂课没去 悲剧了 网上找教程
yamzenyi 2009-08-06
  • 打赏
  • 举报
回复
关注!
netxuning 2009-08-06
  • 打赏
  • 举报
回复
学习,关注!
tompaz 2009-08-06
  • 打赏
  • 举报
回复
学习,关注!
pljstoneman 2009-08-05
  • 打赏
  • 举报
回复
谢谢您的提示~我初学C语言,由于不能用结构,那应该怎样去手工排版布局呢?
如果要1个字节一个字节的写入,那应该用字符串还是数组呢?
ies_sweet 2009-08-05
  • 打赏
  • 举报
回复
我只提示几点吧,

1,数据文件尽量采用等长记录,这样可以方便定位;
2,文件中不要使用结构体,而是手工排版布局,节约空间且
不受结构体内存对齐问题的影响。如果要使用结构体写,那么
也要读到同样的结构体中才可以。
3,注意数据文件和索引文件的同步(更倾向与不使用单独的索引文件)
mengjfu 2009-08-05
  • 打赏
  • 举报
回复
用#program指定对齐方式可以吗?

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧