让我们举一个例子来理解这个问题,
输入 - 学生记录 =
{{ student_id = 1, student_name = nupur, student_percentage = 98},{ student_id = 2, student_name = akash, student_percentage = 75},{ student_id = 3, student_name = yash, student_percentage = 62},{ student_id = 4, student_name = jyoti, student_percentage = 87},{ student_id = 5, student_name = ramlal, student_percentage = 80}}
输出 − 学生记录 =
{{ student_id = 2, student_name = akash, student_percentage = 75},{ student_id = 4, student_name = jyoti, student_percentage = 87},{ student_id = 1, student_name = nupur, student_percentage = 98},{ student_id = 5, student_name = ramlal, student_percentage = 80},{ student_id = 3, student_name = yash, student_percentage = 62}}
为了解决这个问题,我们首先会创建一个存储学生详细信息的结构。现在,我们将使用qsort()函数,并在该函数中定义一个比较器函数,该函数将使用strcmp()方法比较结构的名称。
示例将学生记录存储为结构并按名称排序的程序
在线演示
//c program to store student records as structures and sort them by name#include <stdio.h>#include <stdlib.h>#include <string.h>struct student { int student_id; char* student_name; int student_percentage;};int comparator(const void* s1, const void* s2){ return strcmp(((struct student*)s1)->student_name,((struct student*)s2)->student_name);}int main() { int n = 5; struct student arr[n]; //student 1 arr[0].student_id = 1; arr[0].student_name = "nupur"; arr[0].student_percentage = 98; //student 2 arr[1].student_id = 2; arr[1].student_name = "akash"; arr[1].student_percentage = 75; //student 3 arr[2].student_id = 3; arr[2].student_name = "yash"; arr[2].student_percentage = 62; //student 4 arr[3].student_id = 4; arr[3].student_name = "jyoti"; arr[3].student_percentage = 87; //student 5 arr[4].student_id = 5; arr[4].student_name = "ramlal"; arr[4].student_percentage = 80; printf("unsorted student record:
"); for (int i = 0; i < n; i++) { printf("id = %d, name = %s, age = %d
", arr[i].student_id, arr[i].student_name, arr[i].student_percentage); } qsort(arr, n, sizeof(struct student), comparator); printf("
student records sorted by name:
"); for (int i = 0; i < n; i++) { printf("id = %d, name = %s, age = %d
", arr[i].student_id, arr[i].student_name, arr[i].student_percentage); } return 0;}
输出unsorted student record:id = 1, name = nupur, age = 98id = 2, name = akash, age = 75id = 3, name = yash, age = 62id = 4, name = jyoti, age = 87id = 5, name = ramlal, age = 80student records sorted by name:id = 2, name = akash, age = 75id = 4, name = jyoti, age = 87id = 1, name = nupur, age = 98id = 5, name = ramlal, age = 80id = 3, name = yash, age = 62
以上就是c程序以结构体存储学生记录,并按姓名进行排序的详细内容。
