/************************************************************************/
/* 开始 */
/* 2009-6-15 */
/************************************************************************/
//头标区
struct DDR_HEAD
{
//记录长度 记录中的字节数
char record_length[5];
//交换级别
char exchange_level;
//头标区标识符
char head_identifier;
//线内扩充代码指示符
char extend_code_cue;
//版本号
char edition;
//应用指示符
char cue;
//字段控制长度
char field_control_length[2];
//字段区基地址 字段区起始地址(头标区和目录中的字节数)
char field_address[5];
//扩充字符集指示符
char extend_cue[3];
//字段长度字段的大小
char field_length;
//字段定位字段的大小
char location;
//保留字
char keep;
//字段标识字段的大小
char cue_length;
}ddr_head;
//读完DDR头标区,可以知道
//1、DDR记录长度
//2、头标区和目次区中的字节数
//3、字段长度字段的大小、字段定位字段的大小、字段标识字段的大小
//目次由重复的目次项组成,目次项包括字段标记、字段长度和字段位置。
//目次项
struct DDR_INDEX_ITEM
{
char a;
}ddr_index_item;
struct DDR_DATA
{
char b;
}ddr_data;
struct DR_HEAD
{
//记录长度 记录中的字节数
char record_length[5];
//交换级别
char exchange_level;
//引导字
char guide;
//线内扩充代码指示符
char extend_code_cue;
//版本号
char edition;
//应用指示符
char cue;
//字段控制长度
char field_control_length[2];
//字段区基地址 字段区起始地址(头标区和目录中的字节数)
char field_address[5];
//扩充字符集指示符
char extend_cue[3];
//字段长度字段的大小
char field_length;
//字段定位字段的大小
char location;
//保留字
char keep;
//字段标识字段的大小
char cue_length;
}dr_head;
void main()
{
FILE *fp;//fp会随着读的进行,自动向后移动
fp = fopen("CN35004.000","r+b");
fread(&ddr_head,sizeof(struct DDR_HEAD),1,fp);
printf("DDR记录长度:%c%c%c%c%c/n",
ddr_head.record_length[0],
ddr_head.record_length[1],
ddr_head.record_length[2],
ddr_head.record_length[3],
ddr_head.record_length[4]
);
printf("DDR头标区长度是24/n");
printf("DDR目次区长度是:%d(包含一个结束字符)/n",
(ddr_head.field_address[0]-'0')*10000+
(ddr_head.field_address[1]-'0')*1000+
(ddr_head.field_address[2]-'0')*100+
(ddr_head.field_address[3]-'0')*10+
(ddr_head.field_address[4]-'0')-24);
printf("DDR字段区起始地址:%c%c%c%c%c/n",
ddr_head.field_address[0],
ddr_head.field_address[1],
ddr_head.field_address[2],
ddr_head.field_address[3],
ddr_head.field_address[4]);
}