我目前正在研究使用qsort函数对结构中的特定字段排序结构数组,但我可以使用起点。
这是我当前的struct数组:
/* 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 :(得分: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。
qsort(record, 100, sizeof(record_type), compare_record_type)
的更多信息