#include #include #define COURSE_CODE_SIZE 6 + 1 #define ARRAY_SIZE 100 void sortMarks(char [][ARRAY_SIZE], int [], int); int main(void) { char courseCode[COURSE_CODE_SIZE][ARRAY_SIZE]; int mark[ARRAY_SIZE], counter = 0, i; FILE *fp_in; fp_in = fopen("grades.dat", "r"); printf ("COURSE\tMARK\n\n"); if ( fp_in == NULL ) { printf ("Error openning file\n\n"); exit (1); } else { while( 2 == fscanf(fp_in, "%[^;];%d\n", courseCode[counter], &mark[counter]) ) { printf ("%s:\t%d\n", courseCode[counter], mark[counter]); counter++; } } printf ("\n\n"); sortMarks(courseCode, mark, counter); fclose(fp_in); printf ("Sorted Marks (In Descending Order):\n\n"); for ( i = 0; i < counter; i++) printf ("%s:\t%d\n", courseCode[i], mark[i]); printf ("\n\n"); return 0; } /*End of main() program */ void sortMarks(char courseCode[][ARRAY_SIZE], int mark[], int counter) { char courseCodeTemp[COURSE_CODE_SIZE]; int markTemp; int i, j; for ( i = 0; i < counter; i++) for ( j = i + 1; j < counter; j++) { if ( mark[i] < mark[j] ) { markTemp = mark[i]; mark[i] = mark[j]; mark[j] = markTemp; strcpy( courseCodeTemp, courseCode[i]); strcpy( courseCode[i], courseCode[j]); strcpy( courseCode[j], courseCodeTemp); } } } /* End of sortMarks() Function */