代码之家  ›  专栏  ›  技术社区  ›  Spidfire

按属性值对结构数组排序

  •  2
  • Spidfire  · 技术社区  · 15 年前

    我在C中有一个任务,用qsort对结构进行排序

    struct user {
        enum SEX{m, f} sex;
        char name[32];
        char phonenr[32];
    
    };
    typedef struct user User;
    

    用户将存储在25个元素的数组中

    但我该如何根据名字这样的东西来排序呢?

    1 回复  |  直到 15 年前
        1
  •  7
  •   Carl Norum    15 年前

    在这种情况下,很容易,因为 strcmp 很好地与 qsort . 尝试:

    int compareUser(const void *v1, const void *v2)
    {
        const User *u1 = v1;
        const User *u2 = v2;
        return strcmp(u1->name, u2->name);
    }
    

    然后这样使用:

    qsort(array, 25, sizeof(User), compareUser);
    

    祝你好运!