C语言hong 结构体排序
时间: 2024-11-28 10:16:54 浏览: 7
在C语言中,结构体排序通常涉及到数组或者动态内存分配的结构体集合。如果你想对结构体数组按照某个成员进行排序,可以使用标准库函数`qsort()`或者自定义比较函数。这里是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体
struct Student {
char name[50];
int age;
};
// 比较函数,用于qsort()
int compare(const void *a, const void *b) {
struct Student *s1 = (struct Student *) a;
struct Student *s2 = (struct Student *) b;
return strcmp(s1->name, s2->name); // 按照名字字典序排序
}
int main() {
struct Student students[] = {{"Tom", 20}, {"Jerry", 18}, {"Bob", 22}};
int num_students = sizeof(students) / sizeof(students[0]);
// 对学生数组按名字排序
qsort(students, num_students, sizeof(struct Student), compare);
for (int i = 0; i < num_students; i++) {
printf("%s, %d\n", students[i].name, students[i].age);
}
return 0;
}
```
在这个例子中,我们首先定义了一个结构体`Student`,然后提供了一个`compare`函数作为`qsort()`的第三个参数,告诉它如何判断两个结构体的大小。`compare`函数会根据结构体中的`name`成员进行升序排序。
阅读全文