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