2012-12-06 54 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