如何打印出一个结构体数组中的二位字符串数组组员中的一个元素?

testPhyco 2017-10-16 02:30:14

typedef struct _AREA_SUBAREA_
{
ABV_EAD_UInt8* area;
ABV_EAD_UInt8* sub_area;

}AREA_SUBAREA;


UINT8 *hubei_province[][6] = {
{"Wuhan", "Jiangan", "Jianghan" },
{"Xiangyang", "Xiangcheng", "Fancheng" },
{"Yichang", "Xiling", "Wujiagang" },
};

UINT8 *hunan_province[][6] = {
{"Changsha", "Furong", "Tianxin"},
{"Yueyang", "Yueyanglou", "Junshan"},
};

AREA_SUBAREA* area_info[] = {
{"Hubei",hubei_province},
{"Hunan",hunan_province},
};


如果我想把area_info中的各个元素打印出来,改如何打印?我打印各种段错误。。
或者湖北,湖南这俩二维字符串数组有更好的定义和初始化的方式?
...全文
308 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2017-10-17
  • 打赏
  • 举报
回复
引用 5 楼 hzy_76 的回复:
另外,习惯上都把UNIT8定义为unsigned short,char是1字节,应给是UNIT4才对。
注意不要误导人. UINT8 中的8是指bit数, 也就是8bit的无符号整型, 正好占一字节. 一般都是unsigned char 对应也有UINT16 === unsigned short UINT32 UINT64
testPhyco 2017-10-16
  • 打赏
  • 举报
回复
好像初始化的时候就错了。初始化结构体应该是用常量去初始化,但是我在那个结构体数组中却用了两个变量。是不是这样呢?
testPhyco 2017-10-16
  • 打赏
  • 举报
回复
引用 10 楼 hzy_76 的回复:
不好意思,刚才思维混乱了,UNIT8没错。但是你这个定义还是有问题吧:

UINT8 *hubei_province[][6] = {
    {"Wuhan",     "Jiangan",    "Jianghan"  },
    {"Xiangyang", "Xiangcheng", "Fancheng"  },
    {"Yichang",   "Xiling",     "Wujiagang" },
};
三维数组?6是每个字符串长度?
第一个[]是行吧,第二[]不是列吗?6表示一个数组中最多有6个字符串。
testPhyco 2017-10-16
  • 打赏
  • 举报
回复
引用 7 楼 cfjtaishan 的回复:
typedef struct _AREA_SUBAREA_
{
    ABV_EAD_UInt8* area;
    ABV_EAD_UInt8* sub_area;
 
}AREA_SUBAREA;
 
类型不匹配呢,sub_area和hubei_province类型不匹配。怎么直接赋值呢?
里面的一些类型都是unsigned char类型的。如果是UINT8**的话,改如何打印呢?
testPhyco 2017-10-16
  • 打赏
  • 举报
回复
引用 7 楼 cfjtaishan 的回复:
typedef struct _AREA_SUBAREA_
{
    ABV_EAD_UInt8* area;
    ABV_EAD_UInt8* sub_area;
 
}AREA_SUBAREA;
 
类型不匹配呢,sub_area和hubei_province类型不匹配。怎么直接赋值呢?
哦,对对,应该是UINT8**吧,之前写的是UINT8**,改来改去掉了个*号。
自信男孩 2017-10-16
  • 打赏
  • 举报
回复
typedef struct _AREA_SUBAREA_
{
    ABV_EAD_UInt8* area;
    ABV_EAD_UInt8* sub_area;
 
}AREA_SUBAREA;
 
类型不匹配呢,sub_area和hubei_province类型不匹配。怎么直接赋值呢?
testPhyco 2017-10-16
  • 打赏
  • 举报
回复
引用 4 楼 hzy_76 的回复:
还是没看懂,那你这二维数组的定义怎么设计的?比如hubei_province,按unsigned char的思路,这样保存不了二维字符串数组,只能保存字符串数组。
我用的编译器char类型带符号的,一个char类型的可能占用16位,所以加了个unsigned去掉符号位,就是8位了。 hubei_province这个如果不这样写,该怎么写?这样应该没问题吧。UINT8* 的一个二维指针数组,里面每一个元素都是一个指针。应该没问题啊
testPhyco 2017-10-16
  • 打赏
  • 举报
回复
说明一下,UINT8是unsigned char类型
testPhyco 2017-10-16
  • 打赏
  • 举报
回复
引用 1 楼 hzy_76 的回复:
UINT8是unsigned short?你用来保存字符串?好像从定义就开始错了嘛!
UINT8是unsigned char
老马何以识途 2017-10-16
  • 打赏
  • 举报
回复
不好意思,刚才思维混乱了,UNIT8没错。但是你这个定义还是有问题吧:

UINT8 *hubei_province[][6] = {
    {"Wuhan",     "Jiangan",    "Jianghan"  },
    {"Xiangyang", "Xiangcheng", "Fancheng"  },
    {"Yichang",   "Xiling",     "Wujiagang" },
};
三维数组?6是每个字符串长度?
老马何以识途 2017-10-16
  • 打赏
  • 举报
回复
另外,习惯上都把UNIT8定义为unsigned short,char是1字节,应给是UNIT4才对。
老马何以识途 2017-10-16
  • 打赏
  • 举报
回复
还是没看懂,那你这二维数组的定义怎么设计的?比如hubei_province,按unsigned char的思路,这样保存不了二维字符串数组,只能保存字符串数组。
老马何以识途 2017-10-16
  • 打赏
  • 举报
回复
UINT8是unsigned short?你用来保存字符串?好像从定义就开始错了嘛!

69,371

社区成员

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

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