标题:如何将结构体里的数据打印出来
只看楼主
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
结帖率:93.75%
已结贴  问题点数:20 回复次数:3 
如何将结构体里的数据打印出来
typedef struct
{  
    short SoeTieDian;
    short SoeMS;  
    short station_mod;
    short fault_delay;
    short para_set;
    short reserve_s6;
    short reserve_s7;
    short reserve_s8;
    short DatBySCD;
    short reserve_s10;
    float reserve_f1;
    float reserve_f2;
    short AVC_delay;
    short AVC_YK_timeout;
    char  reserve_c[36];
}Share_SwitchS_F0;
例如结构体变量是这个样子的,我如何把这些量以结构体的形式打印出来,16进制的数也可以。像Share_SwitchS_F0=xxxxxxxx。这种整体输出
搜索更多相关主题的帖子: 打印 结构体 short 数据 float 
2019-10-16 18:17
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
这串xxxxxxxx是什么意思?
2019-10-16 20:48
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:0 
就是我可以不去区分这个结构体里各个成员的内容,可以直接把这个结构体内存空间里的数据以16进制全部取出来后,人工分析就行。因为要取的数据在许多不同的结构体中,想找到一种不论结构体结构是什么样子的,都能把数据取出来的方法。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-10-17 08:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
回复 3楼 纯蓝之刃
那你就将之当成一整块内存打印呗
程序代码:
#include <stdio.h>

void printmemory( const char* varname, const void* mem, size_t size )
{
    printf( "{%s=", varname );
    for( size_t i=0; i!=size; ++i )
        printf( "%02hhX", ((const unsigned char*)mem)[i] );
    printf( "}\n" );
}
#define PRTMEM(sn) printmemory(#sn,&sn,sizeof(sn))

struct foo
{
    int a;
    int b;
};

struct bar
{
    int a, b, c;
};

int main( void )
{
    foo f = { 1, 2 };
    PRTMEM( f );

    bar b = { 1, 2, 3 };
    PRTMEM( b );
}

一种可能的输出是:
{f=0100000002000000}
{b=010000000200000003000000}

2019-10-17 08:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497303-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017446 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved