我想使用在C內置qsort函數排序結構比較功能
typedef struct abc{
long long int fir;
long long int sec;
}abc;
在我用下面的代碼比較功能,這樣,如果變量「杉」是相同的在結構abc數組中的任何兩個元素之間,那麼排序條件將取決於變量「sec」。
long long int cmp(const abc* e1, const abc* e2)
{
if(e1->fir==e2->fir)
return e1->sec-e2->sec;
else
return e1->fir-e2->fir;
}
該代碼似乎無法正常工作。 做什麼是正確的方法?
確定。這裏有什麼問題? – 2013-04-07 19:53:35
它不起作用?你可以發佈調用代碼,還是一個完整的小程序? – hmjd 2013-04-07 19:56:01
使您的比較函數與qsort指定的簽名匹配將是一個好的開始。它應該是int(* compar)(const void *,const void *)。根據您的平臺以及它如何處理參數和返回值可能無關緊要;那麼它可能會再次。 – 2013-04-07 20:13:41