// C program to read Student records
// like id, name and age,
// and display them in sorted order by Name
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// struct person with 3 fields
struct Student {
char* name;
int id;
char age;
};
// setting up rules for comparison
// to sort the students based on names
int comparator(const void* p0, const void* p1)
{
struct Student* ps0 = *(struct Student**) p0;
struct Student* ps1 = *(struct Student**) p1;
return strcmp( ps0
->name
, ps1
->name
); }
// Driver program
int main()
{
int i = 0, n = 5;
struct Student
* arr
= (struct Student
*)malloc(n
* sizeof(struct Student
)); // Get the students data
arr[0].id = 1;
arr[0].name = "bd";
arr[0].age = 12;
arr[1].id = 2;
arr[1].name = "ba";
arr[1].age = 10;
arr[2].id = 3;
arr[2].name = "bc";
arr[2].age = 8;
arr[3].id = 4;
arr[3].name = "aaz";
arr[3].age = 9;
arr[4].id = 5;
arr[4].name = "az";
arr[4].age = 10;
// Print the Unsorted Structure
printf("Unsorted Student Records:\n"); for (i = 0; i < n; i++) {
printf("Id = %d, Name = %s, Age = %d \n", arr[i].id, arr[i].name, arr[i].age);
}
// Sort the structure
// based on the specified comparator
qsort(arr
, n
, sizeof(struct Student
*),comparator
);
// Print the Sorted Structure
printf("\n\nStudent Records sorted by Name:\n"); for (i = 0; i < n; i++) {
printf("Id = %d, Name = %s, Age = %d \n", arr[i].id, arr[i].name, arr[i].age);
}
return 0;
}
Ly8gQyBwcm9ncmFtIHRvIHJlYWQgU3R1ZGVudCByZWNvcmRzIAovLyBsaWtlIGlkLCBuYW1lIGFuZCBhZ2UsIAovLyBhbmQgZGlzcGxheSB0aGVtIGluIHNvcnRlZCBvcmRlciBieSBOYW1lIAoKI2luY2x1ZGUgPHN0ZGlvLmg+IAojaW5jbHVkZSA8c3RkbGliLmg+IAojaW5jbHVkZSA8c3RyaW5nLmg+IAoKLy8gc3RydWN0IHBlcnNvbiB3aXRoIDMgZmllbGRzIApzdHJ1Y3QgU3R1ZGVudCB7IAoJY2hhciogbmFtZTsgCglpbnQgaWQ7IAoJY2hhciBhZ2U7IAp9OyAKCi8vIHNldHRpbmcgdXAgcnVsZXMgZm9yIGNvbXBhcmlzb24gCi8vIHRvIHNvcnQgdGhlIHN0dWRlbnRzIGJhc2VkIG9uIG5hbWVzIAppbnQgY29tcGFyYXRvcihjb25zdCB2b2lkKiBwMCwgY29uc3Qgdm9pZCogcDEpIAp7IAoJc3RydWN0IFN0dWRlbnQqIHBzMCA9ICooc3RydWN0IFN0dWRlbnQqKikgcDA7CiAgICAgICAgc3RydWN0IFN0dWRlbnQqIHBzMSA9ICooc3RydWN0IFN0dWRlbnQqKikgcDE7CiAgICAgICAgcmV0dXJuIHN0cmNtcCggcHMwLT5uYW1lLCBwczEtPm5hbWUpOwp9IAoKLy8gRHJpdmVyIHByb2dyYW0gCmludCBtYWluKCkgCnsgCglpbnQgaSA9IDAsIG4gPSA1OyAKCglzdHJ1Y3QgU3R1ZGVudCAqIGFyciA9IChzdHJ1Y3QgU3R1ZGVudCAqKW1hbGxvYyhuICogc2l6ZW9mKHN0cnVjdCBTdHVkZW50KSk7IAoJLy8gR2V0IHRoZSBzdHVkZW50cyBkYXRhIAoJYXJyWzBdLmlkID0gMTsgCglhcnJbMF0ubmFtZSA9ICJiZCI7IAoJYXJyWzBdLmFnZSA9IDEyOyAKCglhcnJbMV0uaWQgPSAyOyAKCWFyclsxXS5uYW1lID0gImJhIjsgCglhcnJbMV0uYWdlID0gMTA7IAoKCWFyclsyXS5pZCA9IDM7IAoJYXJyWzJdLm5hbWUgPSAiYmMiOyAKCWFyclsyXS5hZ2UgPSA4OyAKCglhcnJbM10uaWQgPSA0OyAKCWFyclszXS5uYW1lID0gImFheiI7IAoJYXJyWzNdLmFnZSA9IDk7IAoKCWFycls0XS5pZCA9IDU7IAoJYXJyWzRdLm5hbWUgPSAiYXoiOyAKCWFycls0XS5hZ2UgPSAxMDsgCgoJLy8gUHJpbnQgdGhlIFVuc29ydGVkIFN0cnVjdHVyZSAKCXByaW50ZigiVW5zb3J0ZWQgU3R1ZGVudCBSZWNvcmRzOlxuIik7IAoJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyAKCQlwcmludGYoIklkID0gJWQsIE5hbWUgPSAlcywgQWdlID0gJWQgXG4iLCAKCQkJYXJyW2ldLmlkLCBhcnJbaV0ubmFtZSwgYXJyW2ldLmFnZSk7IAoJfSAKCS8vIFNvcnQgdGhlIHN0cnVjdHVyZSAKCS8vIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgY29tcGFyYXRvciAKCXFzb3J0KGFyciwgbiwgc2l6ZW9mKHN0cnVjdCBTdHVkZW50ICopLGNvbXBhcmF0b3IpOwoKCS8vIFByaW50IHRoZSBTb3J0ZWQgU3RydWN0dXJlIAoJcHJpbnRmKCJcblxuU3R1ZGVudCBSZWNvcmRzIHNvcnRlZCBieSBOYW1lOlxuIik7IAoJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeyAKCQlwcmludGYoIklkID0gJWQsIE5hbWUgPSAlcywgQWdlID0gJWQgXG4iLCAKCQkJYXJyW2ldLmlkLCBhcnJbaV0ubmFtZSwgYXJyW2ldLmFnZSk7IAoJfSAKCglyZXR1cm4gMDsgCn0gCg==