29.1.05

Comprara dos archivos.

Saludos.

El siguiente programa permite comparar dos archivos de texto binários. Aunque funciona la mayoría de las veces, tiene bastantes errores de diseño y, con ciertas condiciones especiales falla.


#include
#include

#define SIZE 256

// Devuelve 1 si son distintos y 0 si son iguales.
int cmpArrays(char a1[], char a2[], int size);

int main(int argc, char *args[])
{
char buff1[SIZE], buff2[SIZE];
int fd1, fd2;
int readed1, readed2;

fd1 = open(args[1], O_RDONLY);
fd2 = open(args[2], O_RDONLY);

while ( (readed1=read(fd1, buff1, SIZE)) >0) {
readed2=read(fd2, buff2, SIZE);
if (readed1 != readed2) {
printf("\nArchivos de distinto tamaño.\n");
return 0;
}
if (cmpArrays(buff1, buff2, readed1)) {
printf("\nArchivos con distinto contenido.\n");
return 0;
}
}

close(fd1);
close(fd2);

printf("\nArchivos iguales.\n");

return 0;
}


//------------------------------------

int cmpArrays(char a1[],char a2[], int size)
{
int c;

for (c=0; c < size;c++)
if (a1[c] != a2[c])
return 1;

return 0;
}

No comments: