A C program compares 2 files and find its first difference if they are different
This C program will compare two files and find the first line of difference if there is a difference. This is just a basic example of how to read files using C programming, in unix like systems, there is already a command line tool (diff) you can use to compare two files.
-
To compile the program: gcc diff.c
To run the program: ./a.out file1.txt file2.txt
#include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]){ FILE *fp1, *fp2; int nl; char r, r2; int identical; //fp1 = fopen(file1, "r");/* open file1 and file2 for reading */ //fp2 = fopen(file2, "r"); /* if either of these file does not exist, print error and return */ if((fp1 = fopen(argv[1], "r")) == NULL){ printf("Error -- Cannot open file: %s\n\n", argv[1]); return; } if((fp2 = fopen(argv[2], "r")) == NULL){ printf("Error -- Cannot open file: %s\n\n", argv[2]); return; } nl=1;/* Set the number line equals to 1 first.*/ while(!feof(fp1)) { r = fgetc(fp1);/*use r to read each character from file1, use r2 to read each character from file2. */ r2 = fgetc(fp2); if(r =='\n')/* if the character read if a new line, increment nl by 1*/ ++nl; if(r != r2){/* if r is not equal to r2, we have find the difference, print the following message */ printf("The files are different; the first difference is in line %d.\n\n", nl); identical = 0; return; } } if(identical) printf("The files are identical.\n\n"); if((fclose( fp1 ) == EOF)||(fclose( fp2 ) == EOF)) {/* close the file */ printf("Error closing first file.\n\n"); return; } return; }
Search within Codexpedia
Custom Search
Search the entire web
Custom Search
Related Posts