/*
+-------------------------+
| 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';
}
}