Encoders
Hub for Computer Whizzes Register to join us

Encoders > More... > C > Program

/* Program to compare two files, printing the first line where they
   differ. */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE 80

main(int argc, char *argv[])
{
	FILE *fp[2];
	int i;
	char line[2][100], *lp[2];
	if(argc!=3)
	{
                fprintf(stderr,"Usage: filecomp filename1 filename2\n");
		return 1;
	}
        for(i=0;i<2;i++)
                if((fp[i]=fopen(argv[i+1],"r"))==NULL)
		{
                        fprintf(stderr,"Can't open %s\n",argv[i]);
			return 1;
		}
	do
	{
		lp[0]=fgets(line[0],MAXLINE,fp[0]);
		lp[1]=fgets(line[1],MAXLINE,fp[1]);
        }while(!strcmp(line[0],line[1])&&lp[0]!=NULL&&lp[1]!=NULL);
        if(lp[0]==NULL && lp[1]==NULL)
                printf("Both files are same.\n");
	else if(lp[0]==NULL)
                printf("File 1 finishes here: %s",line[0]);
	else if(lp[1]==NULL)
                printf("File 2 finishes here: %s",line[1]);
	else
                printf("Files differ here:\nFile 1:%sFile 2:%s",line[0],line[1]);
	return 0;
}