Boucle en c

Fermé
khalil - 14 avril 2008 à 18:17
UaLShark Messages postés 191 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 juillet 2010 - 14 avril 2008 à 18:44
Bonjour,
j'ai cette boucle qui ne s'arrête quand je l'exécute .le but de cette boucle est d'afficher la ligne d'un fichier contenant nom .quand j'exécute mon programme ça m'affiche la ligne mais elle ne s'arrete pas
void recherche()
#define TAILLE_MAX 1000
{
char chaine[TAILLE_MAX]="";
char nom[200];
FILE *fp;
printf("donner le nom du pays : ");
scanf("%s",&nom);
fp=fopen("Articles","r");
if (fp != NULL)

while (fgets(chaine,TAILLE_MAX,fp)!=nom)

printf("%s\n", chaine);



fclose(fp);

}
merci de me répondre très vite

1 réponse

UaLShark Messages postés 191 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 juillet 2010 35
14 avril 2008 à 18:44
si une ligne du fichier représente un nom

while (fgets(chaine,TAILLE_MAX,fp)!=nom)

retournera toujours true
prace que à la fin de chaque ligne il y'a le retour chariot juste à la fin et qui n'est pas visible
pense à les enlever :

while (fgets(chaine,TAILLE_MAX,fp)!=NULL)
{
printf("%s\n", chaine);
for (int i = 0 ;i<strlen(chaine);i++)
{
if(*(chaine+i) == '\r' ||*(chaine+i) == '\n') // anti Slash r ou anti Slach n
{*(chaine+i) = '\0'; // Anti Slash 0 pour enlever les retours chariot
break;
}
}
if (strcmp(chaine,non) == 0 )
break;
}
0