c语言sort函数如何处理结构体

   2024-10-06 9950
核心提示:在C语言中,可以使用标准库函数qsort来对结构体进行排序。qsort函数的原型如下:void qsort(void *base, size_t nmemb, size_t s

在C语言中,可以使用标准库函数qsort来对结构体进行排序。qsort函数的原型如下:

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

其中,base是指向要排序的数组的指针,nmemb是数组中元素的个数,size是每个元素的大小,compar是一个指向比较函数的指针。比较函数的原型如下:

int compare(const void *a, const void *b);

比较函数返回一个负值、零或正值,分别表示第一个参数小于、等于或大于第二个参数。

如果要对结构体数组进行排序,需要编写一个比较函数,用来比较结构体中的某个字段。假设有如下定义的结构体:

typedef struct {    int id;    char name[50];} Person;

可以编写一个比较函数来比较结构体的id字段:

int compare_person(const void *a, const void *b) {    Person *person1 = (Person *)a;    Person *person2 = (Person *)b;        if (person1->id < person2->id) {        return -1;    } else if (person1->id > person2->id) {        return 1;    } else {        return 0;    }}

然后调用qsort函数对结构体数组进行排序:

int main() {    Person people[] = {        {3, "Alice"},        {1, "Bob"},        {2, "Charlie"}    };        qsort(people, 3, sizeof(Person), compare_person);        for (int i = 0; i < 3; i++) {        printf("%d: %s\n", people[i].id, people[i].name);    }        return 0;}

运行上述代码,将输出排序后的结构体数组:

1: Bob2: Charlie3: Alice

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号