Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
C program to store Student records as Structures and Sort them by Name
In this problem, we are given a student's record which contains student_id, student_name, and student_percentage. Our task is to create a C program to store student records as structures and sort them by name using string comparison.
Syntax
struct Student {
int student_id;
char student_name[50];
int student_percentage;
};
int qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*));
Example Input and Output
Input − student record −
{ 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}
Output − student record sorted by name −
{ 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}
Example
The 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[50];
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];
/* Initialize student records */
arr[0].student_id = 1;
strcpy(arr[0].student_name, "Nupur");
arr[0].student_percentage = 98;
arr[1].student_id = 2;
strcpy(arr[1].student_name, "Akash");
arr[1].student_percentage = 75;
arr[2].student_id = 3;
strcpy(arr[2].student_name, "Yash");
arr[2].student_percentage = 62;
arr[3].student_id = 4;
strcpy(arr[3].student_name, "Jyoti");
arr[3].student_percentage = 87;
arr[4].student_id = 5;
strcpy(arr[4].student_name, "Ramlal");
arr[4].student_percentage = 80;
printf("Unsorted Student Records:<br>");
for (int i = 0; i < n; i++) {
printf("Id = %d, Name = %s, Percentage = %d<br>",
arr[i].student_id, arr[i].student_name, arr[i].student_percentage);
}
/* Sort the array using qsort */
qsort(arr, n, sizeof(struct Student), comparator);
printf("\nStudent Records sorted by Name:<br>");
for (int i = 0; i < n; i++) {
printf("Id = %d, Name = %s, Percentage = %d<br>",
arr[i].student_id, arr[i].student_name, arr[i].student_percentage);
}
return 0;
}
Unsorted Student Records: Id = 1, Name = Nupur, Percentage = 98 Id = 2, Name = Akash, Percentage = 75 Id = 3, Name = Yash, Percentage = 62 Id = 4, Name = Jyoti, Percentage = 87 Id = 5, Name = Ramlal, Percentage = 80 Student Records sorted by Name: Id = 2, Name = Akash, Percentage = 75 Id = 4, Name = Jyoti, Percentage = 87 Id = 1, Name = Nupur, Percentage = 98 Id = 5, Name = Ramlal, Percentage = 80 Id = 3, Name = Yash, Percentage = 62
How It Works
- We define a
Studentstructure with three fields:student_id,student_name, andstudent_percentage. - The
comparatorfunction usesstrcmp()to compare student names alphabetically. - The
qsort()function sorts the array of structures using our custom comparator. - String names are copied using
strcpy()to ensure proper memory management.
Conclusion
This program demonstrates how to store student records in structures and sort them alphabetically by name using qsort() with a custom comparator function. The approach is efficient and handles string comparison correctly.
Advertisements
