假设我们有以下结构体定义:
typedef struct {
int a;
char b;
float c;
} MyStruct;
现在需要按照结构体中的整数值 a 进行排序,可以采用以下方法:
#include
#include
typedef struct {
int a;
char b;
float c;
} MyStruct;
int cmp(const void *a, const void *b) {
return ((MyStruct*)a)->a - ((MyStruct*)b)->a;
}
int main() {
int n = 5;
MyStruct arr[] = {{3, 'a', 1.2}, {5, 'b', 2.4}, {1, 'c', 3.6}, {4, 'd', 4.8}, {2, 'e', 6.0}};
qsort(arr, n, sizeof(MyStruct), cmp);
for (int i = 0; i < n; i++) {
printf("%d %c %.1f\n", arr[i].a, arr[i].b, arr[i].c);
}
return 0;
}
其中,cmp 函数用于比较两个结构体中的整数值,并按照其大小返回负数、零或正数。最后使用 qsort 函数进行排序,输出结果为:
1 c 3.6
2 e 6.0
3 a 1.2
4 d 4.8
5 b 2.4