I am swapping structure lexicographically by name. Is there any way to improve the code when the structure entries are heavy.
Here is the code
#include<stdio.h>
#include<string.h>
struct College
{
char name[100];
char city[100];
int yearOfEstablishment;
float passPercentage;
};
void displayCollegeDetails(struct College c)
{
printf("Name : %s\n",c.name);
printf("City: %s\n",c.city);
printf("Year of establishment : %d\n",c.yearOfEstablishment);
printf("Pass percentage: %.2f\n",c.passPercentage);
}
void swap(struct College *a,struct College *b)
{
struct College temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int n,i,j;
//char name[100],city[100];
//float paasPercentage;
printf("Enter the number of colleges\n");
scanf("%d",&n);
struct College c[n];
if(n<=0)
{
printf("Invalid Input\n");
return 0;
}
for(i=0; i<n; i++)
{
fflush(stdin);
printf("Enter the details of college %d\n",i+1);
printf("Enter name\n");
scanf("%s",c[i].name);
printf("Enter city\n");
scanf("%s",c[i].city);
printf("Enter year of establishment\n");
scanf("%d",&c[i].yearOfEstablishment);
printf("Enter pass percentage\n");
scanf("%f",&c[i].passPercentage);
}
for(i=0; i<n-1; i++)
{
for(j=i+1; j<n; j++)
{
if(strcmp(c[i].name,c[j].name)>0)
{
swap(&c[i],&c[j]);
}
}
}
printf("Details of colleges\n");
for(i=0; i<n; i++)
{
fflush(stdin);
printf("College %d\n",i+1);
displayCollegeDetails(c[i]);
}
return 0;
}