【问题标题】:C - Sorting Array of Structs by Char Array FieldC - 按字符数组字段对结构数组进行排序
【发布时间】:2012-12-06 22:53:42
【问题描述】:

我目前正在研究使用 qsort 函数按结构中的特定字段对结构数组进行排序,但我可以使用一个起点。

这是我当前的结构数组:

/* 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 书中执行此操作的信息。谁能指出我正确的方向?

【问题讨论】:

  • 查看相关链接。这是一个类似的one。基本上你必须使用 qsort 方法

标签: c arrays struct char qsort


【解决方案1】:

根据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)

更多信息cplusplus.com

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多