/* +-------------------------+ | COMPARACION DE FICHEROS | +-------------------------+ Este programa compara dos ficheros y determina si son iguales o distintos. */ #include <stdio.h> /* printf (), gets (), fprintf (), stderr, EOF, fopen (), fclose (), fgets (), fputs (), NULL */ #include <conio.h> /* getch () */ #include <string.h> /* strcpy (), strstr () */ #include <ctype.h> /* toupper () */ #define BOOLEAN int #define TRUE 1 #define FALSE 0 #define ESC 27 #define ENTER '\r' #define NUMMAXCARACTERES 255 void main (void) { BOOLEAN salir = FALSE; char nombre_fichero_1[NUMMAXCARACTERES], nombre_fichero_2[NUMMAXCARACTERES]; FILE *pf1, *pf2; /* punteros a fichero de entrada y fichero de salida resp. */ char ch; while (! salir) { puts ("\n\nCOMPARAR DOS FICHEROS:\n"); printf ("Introduzca nombre de primer fichero (ENTER o CON para " "teclado): "); gets (nombre_fichero_1); if (*nombre_fichero_1 == '\0') strcpy (nombre_fichero_1, "con"); printf ("Introduzca nombre de segundo fichero (ENTER o CON " "para teclado): "); gets (nombre_fichero_2); if (*nombre_fichero_2 == '\0') strcpy (nombre_fichero_2, "con"); if ((pf1 = fopen (nombre_fichero_1, "r")) == NULL) fprintf (stderr, "\nERROR: No es posible abrir el fichero " "%s.\n", nombre_fichero_1); else if ((pf2 = fopen (nombre_fichero_2, "r")) == NULL) { fprintf (stderr, "\nERROR: No es posible abrir el fichero " %"s.\n", nombre_fichero_2); fclose (pf1); } else { int ch1, ch2; while ((ch1 = fgetc (pf1)) == (ch2 = fgetc (pf2)) && ch1 != EOF) ; printf ("\nLos dos ficheros comparados son %s.\n", feof (pf1) && feof (pf2) ? "iguales" : "distintos"); fclose (pf1); fclose (pf2); } printf ("\n\n¿Desea comparar otros dos ficheros (S o ENTER: " "Sí; N o ESC: No)? "); do { ch = getch (); } while (ch != ENTER && toupper (ch) != 'S' && ch != ESC && toupper (ch) != 'N'); salir = ch == ESC || toupper (ch) == 'N'; } }