admin 管理员组

文章数量: 887021


2024年2月23日发(作者:七号基本笔趣阁)

结构体排序c语言

在C语言中,我们可以使用qsort函数来对结构体数组进行排序。qsort函数是C标准库中的一个通用排序函数,可以用于任何类型的数组。为了使用qsort函数对结构体数组进行排序,我们需要提供比较函数,该函数告诉qsort如何比较两个结构体实例。

下面是一个例子,假设我们有一个结构体表示学生,包括姓名和分数:

#include

#include

#include

typedef struct {

char name[50];

int score;

} Student;

int compare_students(const void *a, const void *b) {

Student *studentA = (Student *) a;

Student *studentB = (Student *) b;

return studentA->score - studentB->score;

}

int main() {

Student students[] = {{"Alice", 90}, {"Bob", 85},

{"Charlie", 95}, {"Dave", 88}};

int n = sizeof(students) / sizeof(Student);

qsort(students, n, sizeof(Student),

compare_students);

for (int i = 0; i < n; i++) {

printf("Name: %s, Score: %dn",

students[i].name, students[i].score);

}

return 0;

}

在上面的代码中,我们定义了一个比较函数compare_students,该函数接受两个void指针作为参数,将它们转换为Student指针,并比较它们的分数。然后我们调用qsort函数来对学生数组进行排序。最后,我们循环遍历排序后的数组并打印每个学生的姓名和分数。


本文标签: 函数 排序 数组 结构 学生