Да, это не так хорошо работает. Вот ошибки:
return -1;
Не компилируется. Вы имели в виду
return (char*)-1;
Кроме того, утечки памяти. Есть:
if (f1) fclose(f1);
if (f2) fclose(f2);
return (char*)-1;
Упс, вы читаете из file1
дважды:
while (fgets(line1, sizeof(line1), file1) != NULL && fgets(line2, sizeof(line2), file1) != NULL)
должно быть
while (fgets(line1, sizeof(line1), file1) != NULL && fgets(line2, sizeof(line2), file2) != NULL)
Очистка памяти:
line3=strcat(line1,line2);
Должно быть:
strcat(strcpy(a,line1),line2);
Проверяет только первую строку, потому что ранний возврат:
else
{
return NULL;
}
Просто удалите этот блок.
Упс забыл проверить на ошибки:
char* diff = difference("testifile.c", "testifile2.c");
char* diff = difference("testifile.c", "testifile2.c");
if (diff == (char *)-1) {
/* handle file open error */
}
else if (diff == NULL) {
/* handle no difference */
}
else {
/* your message */
free(diff);
}