2012-12-06 88 views
0

我目前正在尋找使用qsort函數在結構中的特定字段對結構數組進行排序,但我可以使用起點。C - 通過字符數組字段排序結構數組

這是我目前的結構數組:

/* database struct */ 
typedef struct node { 
    char  name[MAX]; 
    char  lname[MAX]; 
    char  address[MAX]; 
    char  number[MAX]; 
}record_type; 

/* global variables */ 
record_type record[100]; 

我希望能夠通過「名稱」字段的字母順序進行排序此(A-Z)。每個char數組中的所有條目都是小寫。我很難找到關於如何在網上或在我擁有的C書中進行這方面的信息。任何人都可以將我指向正確的方向嗎?

+0

qsort(record, 100, sizeof(record_type), compare_record_type) 

更多信息,請參見相關鏈接。這是一個類似的[一個](http://stackoverflow.com/questions/6105513/need-help-using-qsort-with-an-array-of-structs?rq=1)。基本上你必須使用qsort方法 –

回答

4

根據qsort的簽名。

void qsort (void * base, size_t num, size_t size, 
      int (* compar) (const void *, const void *)); 

定義比較函數。

int compare_record_type(const void* a, const void* b) { 
    return strncmp(((*record_type)a)->name, ((*record_type)b)->name, MAX) 
} 

然後像這樣調用qsort。在cplusplus.com