I'm having some trouble with a function we are supposed to be writing. Supposedly, this is how it should work, but it's giving me the incompatible pointer type error and I'm not sure how to fix it.
The issue is in the qsort referencing the compare_last function.
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_PERSONS 100 //person structure definition goes here typedef struct{ char last[32]; char first[32]; int year; }Person; //function declarations go here int compare_last(Person * ptr1, Person * ptr2); void main(void){//main function goes here char *infilename[20]; char *outfilename[20]; FILE * fptrin; FILE * fptrout; int i, j; Person musicians[MAX_PERSONS]; printf("Enter input file name: "); scanf("%s", infilename); printf("Enter output file name: "); scanf("%s", outfilename); strcat(*outfilename, ".htm"); fptrin = fopen(*infilename, "r"); fptrout = fopen(*outfilename, "w"); for(i = 0; i < MAX_PERSONS; i++) { fscanf(fptrin, "%s %s %i", musicians[i].last, musicians[i].first, &musicians[i].year); } qsort(musicians, i, sizeof(musicians[0]), compare_last); fprintf(fptrout, "<html>\n<body>\n<title>LAB14</title>\n"); for(j = 0; j < i; j++) { fprintf(fptrout, "%s %s %i <br>", musicians[j].last, musicians[j].first, musicians[j].year); } fprintf(fptrout, "</body>\n</html>\n"); fclose(fptrin); fclose(fptrout); }//end main //function definitions go here int compare_last(Person * ptr1, Person * ptr2) { int result = strcmp(ptr1 -> last, ptr2 -> last); if(result != 0) return result; else return strcmp(ptr1 -> first, ptr2 -> first); }