为什么会出现此错误:
'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;
}
}
答案 0 :(得分:0)
此:
char *nume[50];
...是一个由50个 pointers 组成的数组。从语义上看,这似乎并不是您想要的,而且strcmp()
当然也不是您期望的参数。
可能您想要的是
char nume[50];
...包含50个char
的数组。这可以很好地用作strcmp()
的参数,因为数组类型 decay 的表达式指向第一个数组元素的指针。实际上,它是strcmp
的参数的标准形式之一。
您可能希望对其他相似的声明进行相同的更改。