Paste
Pasted as C by Sylphide ( 14 years ago )
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFERSIZE 1
int main() {
FILE *f1 = fopen("image1.dd", "rb");
FILE *f2 = fopen("image2.dd", "rb");
//taille de l'image
fseek (f1 , 0, SEEK_END);
long size1 = ftell (f1);
rewind (f1);
//assert taille image1 = image2
int new_percent = 0;
int old_percent = 0;
int diff = 0;
long addr_begin = 0;
long pos = 0;
long total_diff = 0;
char* buffer1;
buffer1 = (char*) malloc(sizeof(char)*BUFFERSIZE);
char* buffer2;
buffer2 = (char*) malloc(sizeof(char)*BUFFERSIZE);
while (!feof(f1) && !feof(f2)) {
fread(buffer1, sizeof(char), BUFFERSIZE, f1);
fread(buffer2, sizeof(char), BUFFERSIZE, f2);
pos += BUFFERSIZE;
//comparer les buffers
if (strcmp(buffer1, buffer2)) {
//bytes différents
total_diff += BUFFERSIZE;
//sauver la borne inférieure la première fois
if (diff==0) {
addr_begin = pos-1;
diff = 1;
}
}
else {
//aucune différence : sauver l'intervalle si elle existe
if (diff==1) {
//todo: addr en hexa
printf("addr %li - %li\n", addr_begin, pos-1-1);
addr_begin = 0;
diff = 0;
}
}
//montrer le % unique avec une précision de 1
new_percent = (int) ( ((double)pos/(double)size1) * 100.0 );
if (new_percent != old_percent)
printf("%i -\n", new_percent);
old_percent = new_percent;
}
//différence à la fin de l'image
if (diff==1) {
//todo: addr en hexa
printf("addr %li - %li\n", addr_begin, pos-1-1);
}
printf("%s = %f MB\n", "différence trouvée", (double)total_diff / (double)1048576);
free(buffer1);
free(buffer2);
fclose(f1);
fclose(f2);
return 0;
}
Revise this Paste