我有一组结构,我想存储在匿名成员结构中。每个小结构都是这样的:
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);
}
我认为我已经可怕地破坏了这个,我需要一些帮助解开它!
答案 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;