Gui*_*des 1 c gcc qsort comparator
相关代码(索引是数组的大小):
typedef struct elemento {
unsigned long linha;
unsigned long coluna;
double valor;
} elemento;
elemento Representados[MAXN];
qsort(Representados, index, sizeof(Representados[0]), lcomparator);
int lcomparator(const void *el1, const void *el2) {
int l1 = ((elemento *)el1)->linha;
int l2 = ((elemento *)el2)->linha;
int c1 = ((elemento *)el1)->coluna;
int c2 = ((elemento *)el2)->coluna;
if (l1 < l2) {
return -1;
}
else if (l1 == l2) {
if (c1 < c2) {
return -1;
}
else if (c1 == c2) {
return 0;
}
else if (c2 > c1) {
return 1;
}
}
else {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
gcc还打印出lcomparator的'control reach end'警告,但是我看不出我的函数怎么可能不返回任何东西.
else if (c2 > c1) {
return 1;
}
Run Code Online (Sandbox Code Playgroud)
是错的,应该是
else if (c1 > c2) {
return 1;
}
Run Code Online (Sandbox Code Playgroud)
或更好
else {
return 1;
}
Run Code Online (Sandbox Code Playgroud)
当然要替换int为unsigned long