我有以下结构:
typedef struct {
char nom[30], prenom[20];
int age;
} ITEM;
//and I have a function where I am entering the info as follow:
void Lire(ITEM **items, int *nb_items)
{
int i,j = 0, novalida = 0;
ITEM *temp;
printf("*** Entrer les donnees et taper . pour terminer\n\n");
for (i = 0; TRUE; i++) {
temp = (ITEM *) realloc(*items, ((*nb_items + 1) * sizeof(ITEM)));
if (temp == NULL)
{
printf("Il n'y a pas de memoire! \n");
exit (0);
}
*items = temp;
printf("> nom : ");
scanf("%s", **items[i].nom);
我得到了错误:
request for member ‘nom’ in something not a structure or union
scanf("%s", **items[i].nom);
然后我想知道是否应该像动态结构一样将值分配给动态结构。
答案 0 :(得分:1)
您需要一些括号,因为运算符.
的优先级高于运算符*
,您正在执行**(items[i].nom)
,而您需要(*items[i]).nom
。
错误告诉您,您正在尝试使用.
上的运算符items[i]
,ITEM *
类型scanf("%s", (*items[i]).nom);
(不是结构或联合)。
你的榜样应该是:
{{1}}
答案 1 :(得分:1)
您应该使用类似
的内容scanf("%s", items[i]->nom);
您有指向ITEM指针的指针,因此items[i]
访问指向ITEM的指针,然后使用->
访问结构的字段。