我有一个位于另一个结构中的数组结构,但我不知道如何在函数中打印子结构的值。
主要结构是这样的:
struct person{
char name[10];
int cash;
listMov mov[];
};
typedef person Person;
Person user[50];
还有子结构
struct listaMovimenti{
int bonifico;
char beneficiario[10];
};
typedef struct listaMovimenti listMov;
listMov mov[2] = {{150, "Ponzi" },
{2000, "Gotti"}};
我试过类似的方法,但没有成功。
printf("Name %s and %d",user[0].mov[1].beneficiario, user[0].mov[1].bonifico);
最佳答案
首先:
变量 listMov mov[2]
与结构内的 listMov mov[];
无关。它们具有相同的名称,但范围不同。它们完全不相关。
第二个:
listMov mov[];
表示您在结构中有一个灵活的数组。在结构中使用灵活数组时,必须使用动态内存分配来保留所需的内存量。使用 Person user[50];
有点没有意义,因为没有为灵活数组保留内存。
灵活数组的使用有点困难。在大多数情况下,使用像这样的指针会更容易:
struct person{
char name[10];
int cash;
listMov* mov;
};
typedef person Person;
Person user[50];
然后像这样分配内存
user[0].mov = malloc(N * sizeof(listMov)); // N is thee number of elements needed
然后你可以这样做:
user[0].mov[0].bonifico = 150;
strcpy(user[0].mov[0].beneficiario, "Ponzi");
user[0].mov[1].bonifico = 200;
strcpy(user[0].mov[1].beneficiario, "Gotti");
printf("Name %s and %d",user[0].mov[1].beneficiario, user[0].mov[1].bonifico);
请记住,您需要为您使用的每个 user[i]
分配一个新的 malloc。
关于c - 打印结构的数组结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48870766/