filecmp
Borland C++ Compiler 5.5
filecmp.c
#include
#include
#define BUFFER_SIZE 65536 int filecmp(const char *pcFile1, const char *pcFile2); int main(int argc, char **argv) { if (argc != 3) { fprintf(stderr, "usage: filecmp file1 file2\n"); return 1; } switch (filecmp(argv[1], argv[2])) { case 0: fprintf(stderr, "filecmp: ˆê’v\n"); break; case 1: fprintf(stderr, "filecmp: •sˆê’v\n"); break; } return 0; } int filecmp(const char *pcFile1, const char *pcFile2) { FILE *pfile1; FILE *pfile2; char acBuf1[BUFFER_SIZE]; char acBuf2[BUFFER_SIZE]; int iRead1; int iRead2; int iRetVal; pfile1 = fopen(pcFile1, "rb"); if (pfile1 == NULL) { fprintf(stderr, "error: fopen(%s)\n", pcFile1); return -1; } pfile2 = fopen(pcFile2, "rb"); if (pfile2 == NULL) { fprintf(stderr, "error: fopen(%s)\n", pcFile2); fclose(pfile1); return -1; } iRetVal = 0; do { iRead1 = fread(acBuf1, sizeof(char), BUFFER_SIZE, pfile1); iRead2 = fread(acBuf2, sizeof(char), BUFFER_SIZE, pfile2); if (iRead1 != iRead2) { iRetVal = 1; break; } if (memcmp(acBuf1, acBuf2, iRead1) != 0) { iRetVal = 1; break; } } while (iRead1 == BUFFER_SIZE); fclose(pfile2); fclose(pfile1); return iRetVal; }