遍历结构体成员变量

2019-07-20 22:11发布

结构体内部的成员比较复杂,有int,char,union,struct等各种类型,还有嵌套结构体,怎么能打印出现在这个结构体中的所有变量?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
zdfwyh
1楼-- · 2019-07-21 19:41
本帖最后由 zdfwyh 于 2016-5-16 23:11 编辑

编制两个程序文件main.c和type.c,main.c演示了如何定义结构体和一个结构体长度数组
type.c定义了结构体内容,如果需要增加和修改结构体内容,只要修改type.c就行,抛砖引玉
mian.c
[mw_shl_code=c,true]
#include "stdio.h"


#define DATA(a,b,c) a b;
typedef struct
{
#include "type.c"
}arm_test;
        
#define DATA(a,b,c) sizeof(a),

const char arm_test_size[]={
#include "type.c"
};
        
#define DATA(a,b,c) printf(c,*(a *)p);p+=arm_test_size[i++];
void myPrintf(void *p)
{
        int n,i;
        n=sizeof(arm_test);
        i=0;

        #include "type.c"


}
void main()
{
        arm_test p;
        
        p.a=1;
        p.b='d';
        p.c=0.9;
        myPrintf((void*)&p);
        while(1);
}[/mw_shl_code]

type.c
[mw_shl_code=c,true]
DATA(int  ,a,"%d ")
DATA(char ,b,"%c ")
DATA(float,c,"%f ")
        
#undef DATA
[/mw_shl_code]
止天
2楼-- · 2019-07-22 00:02
主要是你用什么打印

你要是接收也是可以编程的,
你就把两边的结构体编成一样的,

然后强制转化指针就可以了

(一般都是高端的,不用考虑,碰到不是的算你活该)
xinxian
3楼-- · 2019-07-22 05:12
 精彩回答 2  元偷偷看……
xinxian
4楼-- · 2019-07-22 09:58
shihantu 发表于 2016-5-16 20:16
16 行写成一个 void print(const arm_test* pData) , 17 和 19 行就可以调用了 .

20 行要再封装一个函数 ...

是,谢谢您,我现在已经能正常工作了,用一个强制转换就可以

一周热门 更多>