如何解决错误“'strcmp':形式参数和实际参数1的不同类型?”

时间:2019-05-24 17:03:09

标签: c

为什么会出现此错误:

  

'strcmp':形式参数和实际参数1的不同类型

?这是我的代码:

typedef struct materie {
    char *nume_mat[50];
    int nota;
    struct materie *next;
} materie;

typedef struct student {
    char *nume[50];
    char *prenume[50];
    struct materie *prim;
    struct student *next;
} student; 

void adauga_student(student **lista, student *aux)
{
    student *q1, *q2;
    for (q1 = q2 = *lista;q1 != NULL && strcmp(q1->nume, aux->nume) < 0;q2 = q1, q1 = q1->next);
    if (q2 == q1)
    {
        aux->next = *lista;
        *lista = aux;
    }
    else
    {
        q2->next = aux;
        aux->next = q1;
    }
}

1 个答案:

答案 0 :(得分:0)

此:

    char *nume[50];

...是一个由50个 pointers 组成的数组。从语义上看,这似乎并不是您想要的,而且strcmp()当然也不是您期望的参数。

可能您想要的是

    char nume[50];

...包含50个char的数组。这可以很好地用作strcmp()的参数,因为数组类型 decay 的表达式指向第一个数组元素的指针。实际上,它是strcmp的参数的标准形式之一。

您可能希望对其他相似的声明进行相同的更改。