ReadS57

/************************************************************************/
/*  开始                                                                */
/*      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]);
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值