codice:
char s1[] = fgetc(&fp);
char s2[] = fgetc(&fp1);
Questo pezzo è sbagliato. Come puoi assegnare a due array di char (di cui non specifichi nemmeno la dimensione) un valore di tipo int? Secondo me la cosa migliore è usare un buffer e confrontare man mano i singoli pezzetti di file.