如何在动态结构参数中指定值

时间:2014-10-30 22:14:14

标签: c

我有以下结构:

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);

然后我想知道是否应该像动态结构一样将值分配给动态结构。

2 个答案:

答案 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的指针,然后使用->访问结构的字段。