#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// A simple structure representing a person
struct Person {
char name[32];
int age;
};
// Comparator function: sort by age (ascending)
int compareByAge(const void *a, const void *b) {
const struct Person *pa = (const struct Person *)a;
const struct Person *pb = (const struct Person *)b;
return pa->age - pb->age;
}
// Comparator function: sort by name (lexicographically)
int compareByName(const void *a, const void *b) {
const struct Person *pa = (const struct Person *)a;
const struct Person *pb = (const struct Person *)b;
return strcmp(pa->name, pb->name);
}
int main() {
struct Person people[] = {
{"Emma", 32},
{"Sophia", 25},
{"Ellison", 29},
{"Lyra", 23}
};
size_t count = sizeof(people) / sizeof(people[0]);
// Sort by age
qsort(people, count, sizeof(struct Person), compareByAge);
printf("Sorted by age:\n");
for (size_t i = 0; i < count; i++) {
printf("%s (%d)\n", people[i].name, people[i].age);
}
// Sort by name
qsort(people, count, sizeof(struct Person), compareByName);
printf("\nSorted by name:\n");
for (size_t i = 0; i < count; i++) {
printf("%s (%d)\n", people[i].name, people[i].age);
}
return 0;
}
/*
run:
Sorted by age:
Lyra (23)
Sophia (25)
Ellison (29)
Emma (32)
Sorted by name:
Ellison (29)
Emma (32)
Lyra (23)
Sophia (25)
*/