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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| #include "Diff_txt.h"
#define BUFFSIZE 256
#define OK 0
#define KO 1
void main(int argc, char** argv)
{
if(argc != 4)
printf("Usage: <%s> <file1> <file2> <DELTA> \n", argv[0]);
else
traitement_fichiers(argv[1], argv[2], argv[3]);
}
int traitement_valeurs (int valeurs1, int valeurs2, float precision) {
//int i=0;
//do
//{
if(valeurs1 == valeurs2)
{return OK;}
else if (
((valeurs1 - valeurs2)||(valeurs2 - valeurs1)) <= precision
&&
(((valeurs1 - valeurs2)/valeurs1) <= precision)
// &&(((valeurs2[i] - valeurs1[i])/valeurs2[i]) <= precision) )
)
{ return OK;}
return KO;
//}
//while(valeurs1 && valeurs2);
}
void retrait_blanc (char* chaine, char cible[])
{
int i=0, j=0;
for (i = 0; i < (int)strlen(chaine); i++)
{
if(chaine[i] != ' ')
cible[j++] = chaine[i];
}
cible[j] = '\0';
}
void traitement_fichiers(char* filename1, char* filename2, char* delta)
{// ret1, ret2
int k = 0;
char buf1[BUFFSIZE];
char buf2[BUFFSIZE];
char ligne1[BUFFSIZE];
char ligne2[BUFFSIZE];
char courant1;
char courant2;
FILE *file1 = NULL;
FILE *file2 = NULL;
FILE *file3 = NULL;
//float valeurs1;
//float valeurs2;
float precision=atof(delta);
// printf("%f", precision);
//valeurs1 = 0;
//valeurs2 = 0;
if((file1 = fopen(filename1, "r")) == NULL)
{
fprintf(stderr, "Erreur à l'ouverture du fichier <%s>\n", filename1);
exit(1);
}
if((file2 = fopen(filename2, "r")) == NULL)
{
fprintf(stderr, "Erreur à l'ouverture du fichier <%s>\n", filename2);
exit(1);
}
do
{
fgets(buf1,BUFFSIZE, file1);
fgets(buf2,BUFFSIZE, file2);
k++; //pour le numero de ligne
retrait_blanc (buf1, ligne1);
retrait_blanc (buf2, ligne2);
if(strcmp(ligne1, ligne2) != 0) {
courant1=getc(file1);
courant2=getc(file2);
if((file3 = fopen("resultat", "a")) == NULL) {
fprintf(stderr, "Erreur à l'ouverture du fichier resultat\n");
exit(1);
}
//courant=getc(file1);
//fprintf(file3,"le carc cour est:%d\n",courant);
//if (isalpha(courant1 = getc(file1))==0 && isalpha(courant2 = getc(file2))==0){
if(traitement_valeurs (courant1, courant2, precision) == KO) {
fprintf(file3, "%s(ligne %d):\t%s\n", filename1, k, buf1);
printf("%s(ligne %d):\t%s\n", filename1, k, buf1);
fprintf(file3, "%s(ligne %d):\t%s\n", filename2, k, buf2);
printf("%s(ligne %d):\t%s\n", filename2, k, buf2);
}
//}
buf1[0]='\0';buf2[0]='\0';
ligne1[0]='\0';ligne2[0]='\0';
}
}
while(!feof(file1) && !feof(file2));
fclose(file1);
fclose(file2);
fclose(file3);
} |