如何在匿名成员中存储一组结构?

时间:2012-02-27 09:49:50

标签: c struct c99

我有一组结构,我想存储在匿名成员结构中。每个小结构都是这样的:

static struct {
    uint16_t buf[256];
} bufData[8];

我知道它只有8个元素。我希望将其包含在另一个结构中,如下所示:

static struct {
    int size;
    // I am not sure how to proceed
    //char * bufData;
    //struct * bufData;
} Table[MAX_FILES];

目前正在输入数据:

  for (int i = 0; i < 8; i++) {
        loadData(i,bufData[i].buf);
        printf("%s\n", bufData[i].buf); // This works
    }

我希望将它存储在Table的j元素中,如Table [j] .bufData。目前我已经尝试了

memset(bufData, 0, sizeof(bufData));
Table[j].size = 256;
Table[j].bufData = &bufData;

然后解压缩它,但它不起作用。

char * test = Table[j].bufData;
for (int i = 0; i < 8; i++) {
    printf("%s\n", test[i].buf);
}

我认为我已经可怕地破坏了这个,我需要一些帮助解开它!

1 个答案:

答案 0 :(得分:2)

由于bufData是一个结构,你应该将它存储为bufData指针(不是char指针),或者只是作为bufData的数组存储:

struct BufData /* this declares a type, not a variable */
{
    uint16_t buf[256];
};

选项1:

static struct 
{
    int size;
    struct BufData* myBufData;
} Table[MAX_FILES];

选项2:

static struct 
{
    int size;
    struct BufData myBufData[8];
} Table[MAX_FILES];

编辑: 在声明结构时,不要混淆声明类型:

struct aStruct
{
...
};

声明一个具有未命名结构类型的变量:

struct 
{
...
} aVariable;

声明类型的类型和变量:

struct aStruct
{
...
} aVariable;