2016-08-23 58 views
-1

我有一個結構:如何使用qsort()對結構數組進行排序?

struct data { 
    float goodbye; 
    char balance; 
    unsigned char clouds; 
    float badge; 
    double soda; 
    char bat; 
    short int parcel; 
    char vessel; 
    char spade; 
    long int cover; 
    unsigned long int hobbies; 
    short int voyage; 
    int stomach; 
    char sort; 
    char system [11]; 
    unsigned short adjustment; 
}; 

我需要創建結構的數組,然後能夠使用qsort功能的結構的各種元件進行排序。

我已經看過其他問題,但以前沒有人看起來適用於我的應用程序。

我已經試過類似如下:

static int cmpr(const void *a, const void *b) { 
     if (((data*)a)->goodbye < ((data*)b)->goodbye) 
      return 1; 
     else if (((data*)a)->goodbye > ((data*)b)->goodbye) 
       return -1; 
     else 
     return 0; 
    } 

這不是爲我工作無論是作爲我得到'data is undeclared in this function'

+1

你能說出它不適合你嗎?你得到的輸出是什麼? – ameyCU

+7

'(data *)' - >'(struct data *)'也許 – 4386427

回答

1

類型的結構是struct data,不只是data

在C++中,你的代碼可以正常工作。然而,在C中,結構體名稱需要struct關鍵字。

因此,將您的演員從(data*)更改爲(struct data*)