1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
#include <stdio.h>
#include <stdlib.h>
int comparerFichiersBinairesType(char * nomf1, char * nomf2, int nbOctet, float seuil);
int comparerFichiersBinairesTypeByte(char * nomf1, char * nomf2);
int comparerFichiersBinairesTypeDouble(char * nomf1, char * nomf2, float seuil);
int comparerFichiersBinairesTypeFloat(char * nomf1, char * nomf2, float seuil);
int main (int argc, char * argv[]){
printf("%s %s %s %s\n",argv[1], argv[2],argv[3], argv[4]);
comparerFichiersBinairesType(argv[1], argv[2], atoi(argv[3]), atof(argv[4]));
return 0;
}
int comparerFichiersBinairesType(char * nomf1, char * nomf2, int nbOctet, float seuil){
if (nbOctet == 1)
comparerFichiersBinairesTypeByte(nomf1, nomf2);
else if (nbOctet == 4)
comparerFichiersBinairesTypeFloat(nomf1, nomf2, seuil);
else
comparerFichiersBinairesTypeDouble(nomf1, nomf2, seuil);
return 0;
}
int comparerFichiersBinairesTypeByte(char * nomf1, char * nomf2){
FILE *fic1;
FILE *fic2;
int n1, n2, n3;
fic1 = fopen(nomf1,"rb");
fic2 = fopen(nomf2,"rb");
if( fic1 == NULL || fic2 == NULL )
return 0;
while( fread(&n1, 1, 1,fic1)) {
fread(&n2, 1, 1,fic2);
if (n1 != n2) {
// Fonction gererErreur
printf("%s (valeur: %d) et %s (valeur: %d)\n", nomf1, n1, nomf2, n2);
//system("! sh TnrMge.sh $ERR_FICHIERBINDIFF && exit $ERR_FICHIERBINDIFF");
}
}
fclose(fic1);
fclose(fic2);
return 0;
}
int comparerFichiersBinairesTypeDouble(char * nomf1, char * nomf2, float seuil){
FILE *fic1;
FILE *fic2;
double n1, n2;
float ecartInf = 1.0 - seuil, ecartSup = 1.0 + seuil;
fic1 = fopen(nomf1,"rb");
fic2 = fopen(nomf2,"rb");
if( fic1 == NULL || fic2 == NULL )
return 0;
while( fread(&n1, sizeof(double), 1,fic1)) {
fread(&n2, sizeof(double), 1,fic2);
if (n1 != n2) {
if ((n2 < n1*ecartInf) || (n2 > n1*ecartSup)){
// Fonction gererErreur
printf("%s (valeur: %lf) et %s (valeur: %lf)\n", nomf1, n1, nomf2, n2);
//system("! sh TnrMge.sh $ERR_FICHIERBINDIFF && exit $ERR_FICHIERBINDIFF");
}
}
}
fclose(fic1);
fclose(fic2);
return 0;
}
int comparerFichiersBinairesTypeFloat(char * nomf1, char * nomf2, float seuil){
FILE *fic1;
FILE *fic2;
float n1, n2;
float ecartInf = 1.0 - seuil, ecartSup = 1.0 + seuil;
fic1 = fopen(nomf1,"rb");
fic2 = fopen(nomf2,"rb");
if( fic1 == NULL || fic2 == NULL )
return 0;
while( fread(&n1, sizeof(float), 1,fic1)) {
fread(&n2, sizeof(float), 1,fic2);
if (n1 != n2) {
if ((n2 < n1*ecartInf) || (n2 > n1*ecartSup)){
// Fonction gererErreur
printf("%s (valeur: %f) et %s (valeur: %f)\n", nomf1, n1, nomf2, n2);
//system("! sh TnrMge.sh $ERR_FICHIERBINDIFF && exit $ERR_FICHIERBINDIFF");
}
}
}
fclose(fic1);
fclose(fic2);
return 0;
} |
Partager