Bonjour,
J'ai fait mon programme C suivant sous windows avec Visual studio
2008.
Supposons que on a 4 fichiers textes :
Soit le fichier "f.txt":
a b
a c
a d
b c
b d
c d
a b c
a b d
b c d
a c d
a b c d
Soit "f1.txt" :
a
d a
c a
b c a
Soit "f2.txt" :
a
c
b
d
b a
d a
b c
d c
b c a
Soit "f3.txt" :
a
b
c
c a
d a
b a
b c
b c a
Ce programme permet d'afficher le r=E9sultat de comparaison entre :
- f.txt et f1.txt
- f.txt et f2.txt
- f.txt et f3.txt
J'ai d=E9j=E0 d=E9crit auparavant la proc=E9dure de comparaison entre deux
fichiers qui doit respecter les deux conditions :
l'ignorance de l'ordre entre les mots et l'inclusion.
Voici le programme:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 1024
char* strndup(const char *str, size_t n)
{
char *ret =3D malloc((n+1) * sizeof (char));
if (!ret)
exit(0); strncpy(ret, str, n);
ret[n] =3D 0;
return ret;
}
void free_tab(char** t)
{
char** head =3D t;
while (t && *t)
{
free(*t);
t++;
}
free(head);
}
char** get_word(const char* str)
{
char* pos =3D NULL;
char** res =3D NULL;
int nb =3D 0;
do
{
int size =3D 0;
pos =3D strchr(str, ' ');
if (pos)
size =3D pos - str; else
size =3D strlen(str) - 1; /* - 1 to get rid of \n */
nb++;
res =3D realloc(res, (nb + 1) * sizeof (char*));
res[nb -1] =3D strndup(str, size);
str =3D pos + 1;
}
while (pos);
res[nb] =3D 0;
return res;
}
int is_same(const char* const s1, const char* const s2)
res[nb - 1] =3D strndup(s, strlen(s) - 1); // Get rid of the\n
res[nb] =3D 0;
}
}
fclose(f);
fclose(f1);
}
return res;
}
void display_tab(char** tab)
{
while (tab && *tab)
{
printf("%s\n", *tab);
tab++;
}
}
int main()
{
char** res =3D NULL;
char** intersect =3D NULL;
char input[32];
int i;
for (i =3D 1; i <=3D 3; i++)
{
sprintf(input,"f%d.txt",i);
res =3D compare_file("f.txt",input);
printf("Comparing f.txt and %s:\n", input);
display_tab(res);
free_tab(res);
}
return 0;
}
Apr=E8s la compilation et l'ex=E9cution, j'obtiens l'affichage suivant:
Comparing f.txt and f1.txt:
a b
b d
c d
a b c
a b d
b c d
a c d
a b c d
Comparing f.txt and f2.txt:
a c
b d
a b c
a b d
b c d
a c d
a b c d
Comparing f.txt and f3.txt:
b d
c d
a b c
a b d
b c d
a c d
a b c d
Final result:
Mais, le r=E9sultat souhait=E9 est :
b d
c d
a b d
b c d
a c d
a b c d
Comparing f.txt and f2.txt:
b d
a b d
b c d
a c d
a b c d
Comparing f.txt and f3.txt:
b d
c d
a b d
b c d
a c d
a b c d
J'ai r=E9vis=E9 mon code beaucoup des fois mais je ne trouve pas pourquoi
je n'obtiens pas le r=E9sultat souhait=E9.
Vous avez le code et les fichiers textes. Pouvez vous tester ce code
et me dire que est ce il affiche chez vous ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anc break
Bonjour,
Si vous voulez je vous explique encore le problème. Quelles sont les modifications à faire pour aboutir à une solution ? Si vous avez autre solution à ce problème alors pas de problème... Je suis bloquée et j'ai besoin de vos aides.
Merci.
Bonjour,
Si vous voulez je vous explique encore le problème.
Quelles sont les modifications à faire pour aboutir à une solution ?
Si vous avez autre solution à ce problème alors pas de problème...
Je suis bloquée et j'ai besoin de vos aides.
Si vous voulez je vous explique encore le problème. Quelles sont les modifications à faire pour aboutir à une solution ? Si vous avez autre solution à ce problème alors pas de problème... Je suis bloquée et j'ai besoin de vos aides.
Merci.
domi
anc break wrote:
Mais, le résultat souhaité est : b d c d .... J'ai révisé mon code beaucoup des fois mais je ne trouve pas pourquoi je n'obtiens pas le résultat souhaité.
C'est quasi incompréhensible à lire. Utilise le Debugger de Visual et fais du pas à pas en regardant à chaque fois toutes tes variables et tu verras à quel moment tu n'obtiens pas ce que tu souhaites. C'est fait pour ça le Debugger...
anc break wrote:
Mais, le résultat souhaité est :
b d
c d
....
J'ai révisé mon code beaucoup des fois mais je ne trouve pas pourquoi
je n'obtiens pas le résultat souhaité.
C'est quasi incompréhensible à lire.
Utilise le Debugger de Visual et fais du pas à pas en regardant à chaque
fois toutes tes variables et tu verras à quel moment tu n'obtiens pas ce
que tu souhaites.
C'est fait pour ça le Debugger...
Mais, le résultat souhaité est : b d c d .... J'ai révisé mon code beaucoup des fois mais je ne trouve pas pourquoi je n'obtiens pas le résultat souhaité.
C'est quasi incompréhensible à lire. Utilise le Debugger de Visual et fais du pas à pas en regardant à chaque fois toutes tes variables et tu verras à quel moment tu n'obtiens pas ce que tu souhaites. C'est fait pour ça le Debugger...
anc break
>Utilise le Debugger de Visual et fais du pas à pas
Comment je vais utiliser le Debugger de Visual 2008 et fais du pas à pas ?
Menu Déboguer ==> .... puis qu'est ce que vais choisir ?
Comment utiliser le Debugger sur tout le programme et comment que l'erreur est la bas ?
Merci.
>Utilise le Debugger de Visual et fais du pas à pas
Comment je vais utiliser le Debugger de Visual 2008 et fais du pas à
pas ?
Menu Déboguer ==> .... puis qu'est ce que vais choisir ?
Comment utiliser le Debugger sur tout le programme et comment que
l'erreur est la bas ?