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:
Post a Comment