这是代码,它按平均跑数对板球运动员的数据进行排序。这qsort
函数显示错误:
[错误] C:\Users\Encoder\Documents\C-Free\Temp\Untitled3.cpp:29:
错误:无效的转换int (*)(cricketer*, cricketer*)
to
int (*)(const void*, const void*)
[错误] C:\Users\Encoder\Documents\C-Free\Temp\Untitled3.cpp:29:
错误:初始化 `void qsort(void*, size_t, size_t,
整数()(常量无效,常量无效*))'
include
#include<stdlib.h>
struct cricketer //structure for details of cricketer
{
int avg_run;
char name[20];
int age;
int match_no;
} c[4];
int sort(struct cricketer *a, struct cricketer *b); //pre-defining sort function
int main() //main function
{
int i, s;
for (i = 0; i < 3; i++) //enumerating structure records.
{
printf("enter the name of cricketer ");
fflush(stdin);
gets(c[i].name);
printf("enter his age,his no of matches and total average runs ");
scanf("%d%d%d",&c[i].age, &c[i].match_no, &c[i].avg_run);
}
printf("records before sorting");
for (i = 0; i < 3; i++)
{
printf("\n\nname ");
puts(c[i].name);
printf("age %d\nno of matches %d\naverage runs %d\n",c[i].age, c[i].match_no, c[i].avg_run);
}
qsort(c, 3, sizeof(c[0]), sort); //sorting using qsort
printf("\nrecords after sorting");
for (i = 0; i < 3; i++)
{
printf("\n\nname ");
puts(c[i].name);
printf("age %d\nno of matches %d\naverage runs %d\n",c[i].age, c[i].match_no, c[i].avg_run);
}
}
int sort(struct cricketer *a, struct cricketer *b) //sort function definition
{
if (a->avg_run == b->avg_run)
return 0;
else
if ( a->avg_run > b->avg_run)
return 1;
else
return -1;
}