Probleme de if

cobra176 Messages postés 86 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 21 janvier 2009 - 9 févr. 2005 à 10:03
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 9 févr. 2005 à 16:22
bonjour tout le monde
j'ai un code qui me permet d'afficher les lignes dans un fichier contenat les mots que j'ai choisit et si il n'y a pas le mot recherche il m'afficher ce mot n'existe pas mais voila pour certains tout marche bien et d'autres fois il affiche à la fin de la recherche d'un mot qui existe
la phrase mot n'existe pas aprés l'affichage

voici mon code si vous pouvez jetter un coup d'oeil

lecture = fopen(nom, "r");
printf(" saisir le mot rechercher en respectant les minuscules et les MAJUSCULES\n");
scanf("\n%s",&szFind);

while(fgets(szLine, 500, lecture) != NULL) // condition d'entrée
{


if(strstr(szLine, szFind) != NULL) // condition d'affichage et d'ecriture
{
printf("\n%s",szLine); // affichage de la ligne contenant le mot rechercher

}


}

if(strstr(szLine, szFind) == NULL)
{
printf("le mot demande n'existe pas dans le fichier");
fprintf(ecriture,"le mot demande n'existe pas dans le fichier");

}

}


merci de votre aide

2 réponses

HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
9 févr. 2005 à 15:50
Slt, pas de mistère, c'est normal que tu est ce bug.
ex :
fichier en entrer contient :
"c'est moi qui //ligne 1
est trouve" //ligne 2

ton prog :
je lui demande de chercher "moi"
dans le while 1ère itération, il trouve et affiche =>szLine vaut "
c'est moi qui" et szFind vaut "moi"

2ème itération, il n'affiche rien => szLine vaut "
est trouve" et szFind vaut "moi"
3ème itération, fin de fichier et fin du while=> szLine vaut toujours "est trouve" et szFind vaut toujours "moi"

Maintenant regarde ton test dans le blanc des yeux et tu comprendra......

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
9 févr. 2005 à 16:22
Rajoute un compteu (ou un booléen) initiliasé au début à 0 (ou à FALSE), incrémente le dans la boucle while (ou met le à TRUE) si le mot est trouvé. A la fin il suffit de tester la valeur du compteur (ou du booléen).
0
Rejoignez-nous