Boucle en c

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
Configuration: Windows XP
Firefox 2.0.0.13

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. 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;
    }