我有一个函数,我向它发送数组结构的元素,但是,由于某种原因,总是出现错误
typedef struct student{
char *fullName;
char groupNumber[8];
float GPA;
}student;
int cmpName(student* p1, student* p2){
printf("%s\n",p1->fullName);
return (strcmp(p1->fullName,p2->fullName));
}
void gnomeSort(student **mass,int size,int (*cmpFunc)(student *p1, student *p2)){
int index = 0;
while (index < size){
if (index == 0)
index++;
if (cmpFunc(mass[index],mass[index-1]))
index++;
else{
student *tmp;
tmp = mass[index-1];
mass[index-1] = mass[index];
mass[index] = tmp;
index--;
}
}
}
我知道问题很可能出在指针上,但我不知道如何解决它
1条答案
按热度按时间fjnneemd1#
尽量不要在参数中使用函数
将
int (*cmpFunc)(student *p1, student *p2)
替换为int param
并独立执行函数cmpName()
,然后调用gnomeSort()