、、、の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に、私が読み取る(生の)データへのポインターがあります。これらの予約されていない値のみが必要であり、予約された値は無視します。