、、、の3つの構造header
がdataA
ありdataB
ます。はheader
、使用される構造を決定します。dataA
とはほぼ同じ構造を持っています(dataB
たとえば):
struct dataA
{
int intValue;
char reserved1[8];
float floatValue;
char reserved2[4];
short shortValue;
};
struct dataA
{
int intValue;
short shortValue;
char reserved[2];
float floatValue;
};
次のように印刷したい:
sprintf(outStr, "%i, %f, %s", p->intValue, p->floatValue, p->shortValue);
- また -
sprintf(outStr, "%i, %f, %s", p.intValue, p.floatValue, p.shortValue);
どうすれば宣言できp
ますか?(注:両方とも大きな構造dataA
を持っていますが、予約dataB
値であるものを除いて、ほとんど同じデータです。)
私はこのようなことを考えています:
void * p;
if (header->type==1)
p = (dataA*)(pData);
else if (header->type==2)
p = (dataB*)(pData);
// print all data here
注:ここpData
に、私が読み取る(生の)データへのポインターがあります。これらの予約されていない値のみが必要であり、予約された値は無視します。