C - Fichiers, struct & String - Recherche

Fermé
eurydice - Modifié par eurydice le 11/04/2012 à 21:52
scribedico Messages postés 47 Date d'inscription vendredi 13 avril 2012 Statut Membre Dernière intervention 6 mai 2013 - 13 avril 2012 à 22:06
Hello
Je souhaite savoir comment mettre en place une fonction de recherche d'une chaîne de caractères (String) dans un fichier. Sachant que cette châine fait partie d'une structure.

Je m'explique. J'ai le code suivant qui me permet de remplir un fichier de villes desservies. Pour ne pas trop allourdir mon post, je laisse de côté le bout de code pr vérifier que le fichier existe

 
FILE *entree;  
struct desserte {  
                          char ville[40];  
                          char gare[40];  
                         };  
   
struct desserte escale;  
strcpy(escale.ville, "1");   
   
entree = fopen("liste_villes", "a");  
   
 while(strcmp(escale.ville,"ZZ") != 0)  
 {  
            printf("Entrer une ville en majuscules (ZZ pour terminer): ");  
            scanf("%s", escale.ville);  
   
            if(strcmp(escale.ville,"ZZ") != 0)  
           {  
                  fprintf(entree, "%s\n", escale.ville);  
   
                  printf("Entrer la gare correspondante en majuscules: ");  
                  scanf("%s", escale.gare);  
                  fprintf(entree, "%s\n", escale.gare);  
            }  
 }  
 fclose(entree);  
}  


Je souhaite mettre en place un programme qui permet de saisir l'ensemble des trains desservant une gare à un moment donné.

  
int verifgare();  
   
main()  
{  
struct train {  
   
             int num_train;  
   
             char gare_dep[30];  
   
             // Je n'ai pas mis tous les champs pour simplifier  
             };  
      
struct train voyage;  
int resultat;  
   
FILE *f1;  
   
f1 = fopen("liste_vols", "a");  
   
        voyage.num_train = -1;    
        while(voyage.num_vol != 0)  
   
        {  
   
            printf("Entrer un numéro de train (0 pour arrêter la saisie) : ");  
            scanf("%d", &voyage.num_train);  
   
              if(voyage.num_train != 0)   
              {  
                    printf("Saisir la ville de départ : ");   
                    scanf("%s", voyage.gare_dep);  
                    resultat = verifgare(voyage.gare_dep);    
   
                    if (resultat == 0)  
                    {  
                           printf("La gare saisie n'est pas valide.\n");  
                           fclose(entree);  
                    }  
                    else   
                    {  
                           // On sauvegarde dans le fichier.  
                           fprintf(f1, "%d %s\n", voyage.num_train, voyage.gare_dep);  
                    }    
fclose(f1);  
}  
   
int verifgare(char gare[30])  
 {  
  FILE *f2;  
   
  f2= fopen("liste_villes","r");  
  int trouve = 0;  
  char temp[30] ; // Ligne lue dans fichier liste_villes  
  strcpy(temp, "");  
   
   while (!EOF && trouve == 0)  
   
   {  
             fgets(temp, 29, f2);  
   
             if((strcmp(temp, aero)) == 0)  
             {  
                       trouve = 1;  
                       return 1;  
             }   
   }  
   return 0;    
   fclose(f2);  
   
}  


ça ne marche pas. J'obtiens toujours le message "La gare saisie n'est pas valide" bien que je saisie des gares renseignées dans le fichier.

Pouvez-vous m'aider ?

1 réponse

scribedico Messages postés 47 Date d'inscription vendredi 13 avril 2012 Statut Membre Dernière intervention 6 mai 2013 2
13 avril 2012 à 22:06
Salut,

je n'ai pas regardé en détail, mais dans la fonction verifgare tu passes "gare" en paramètre et tu testes "aero" ???
0