对结构体类型数据进行排序
时间: 2023-09-09 08:14:37 浏览: 93
结构体排序
可以使用标准库的`qsort`函数来对结构体类型数据进行排序。`qsort`函数的原型如下:
```c
void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
```
其中,`base`是待排序的数组首地址,`nmemb`是数组元素个数,`size`是数组每个元素的大小,`compar`是用来比较两个元素的函数指针。
假设有一个结构体类型为`Student`,其中包含`name`和`score`两个成员变量,可以通过如下的方式来定义比较函数:
```c
int compare(const void *a, const void *b) {
Student *s1 = (Student *)a;
Student *s2 = (Student *)b;
return s1->score - s2->score;
}
```
然后就可以使用`qsort`函数对`Student`类型的数组按照`score`成员变量进行排序了:
```c
Student students[] = {
{"Tom", 80},
{"Jerry", 70},
{"Alice", 90},
{"Bob", 85}
};
int n = sizeof(students) / sizeof(students[0]);
qsort(students, n, sizeof(Student), compare);
```
这样就可以将`students`数组按照`score`从小到大排序。
阅读全文