#include #include #include #define MAXLEN 1000 void flcmp(FILE *fp1, FILE *fp2); int main(int argc, char *argv[]) { FILE *fp1, *fp2; if (argc != 3) { fprintf(stderr, "Usgae: %s file1 file2\n", *argv); return 1; } else if (!(fp1 = fopen(argv[1], "r")) || !(fp2 = fopen(argv[2], "r"))) { fprintf(stderr, "%s: unable to read files\n", *argv); return 1; } else { flcmp(fp1, fp2); return 0; } } void flcmp(FILE *fp1, FILE *fp2) { char l1[MAXLEN], l2[MAXLEN]; char *lp1, *lp2; do { lp1 = fgets(l1, MAXLEN, fp1); lp2 = fgets(l2, MAXLEN, fp2); if (lp1 == l1 && lp2 == l2) { if (strcmp(l1, l2)) { printf("first difference in line\n%s\n", lp1); lp1 = lp2 = NULL; } } else if (lp1 == NULL && lp2 == l2) { printf("end of first file at line\n%s\n", lp2); } else if (lp1 == l1 && lp2 == NULL) { printf("end of first file at line\n%s\n", lp1); } } while (lp1 == l1 && lp2 == l2); }