Lire une variable dans un fichier

momoko94 Messages postés 6 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 2 mai 2009 - 1 mai 2009 à 09:54
momoko94 Messages postés 6 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 2 mai 2009 - 2 mai 2009 à 12:08
Bonjour,

voila le problème, je voudrais rechercher dans un fichier le nombre d'etudinats d'une ville et l'afficher.

typedef struct
{
    char nom_ville[30];
    int population;
    int nb_etudiant;
}ville;

printf(" vous etes ici pour lire  les informations sur une ville\n");
        printf("entrer le nom d'une ville \n");
        gets(villemain.nom_ville);


        pt=fopen("D:\\ProjetC\\proj.txt","r");
            if(pt==NULL)
            {
                printf("ouverture impossible");


                exit(0);
            }


            while(erreur=fread(&villemain,sizeof(ville),1,pt)!=(feof(pt)))
            {
                if(erreur==0)
                {
                    return 0;
                    fclose(pt);


                }




                    if(villemain.nom_ville)
                    {
                        printf("la ville est dans le fichier\n\n");
                        printf("population ou nombre d'etudiants\n");
                        gets(choix_info);
                        if(strcmp(choix_info,"nombre d'etudiants")==0)
                        {
                            while(fgets(ligne,sizeof(ligne),pt)!=NULL)
                            {
                                printf("%s",ligne);
                            }
                            while(erreur=fread(&villemain,sizeof(ville),1,pt)!=(feof(pt)))
                            {
                                if(erreur==0)
                                {
                                    return 0;
                                    fclose(pt);


                                }
                                printf("%d",villemain.nb_etudiant);
                                fclose(pt);
                            }


avec mon fichier texte

NOM DE LA VILLE: paris
POPULATION : 2500000
NOMBRE D'ETUDIANTS : 25000




NOM DE LA VILLE: marseille
NOMBRE D'ETUDIANTS : 15000
 
le programme m'affiche:
0000
NOMBRE D'ETUDIANTS : 25000




NOM DE LA VILLE: marseille
NOMBRE D'ETUDIANTS : 15000
808792608

2 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
1 mai 2009 à 10:52
Salut,

Pour commencer, je te colle ici un extrait du man de gets() :
       «Never use gets().  Because it is impossible to tell without knowing the
       data in advance how many  characters  gets()  will  read,  and  because
       gets() will continue to store characters past the end of the buffer, it
       is extremely dangerous to use.  It has  been  used  to  break  computer
       security.  Use fgets() instead.»
A ce niveau là tu sais ce qu'il te reste a faire

Ensuite, je vois que tu effectue régulièrement ceci :
   {
      return 0;
      fclose(pt);
   }
Ton fclose() ne sera jamais effectué vu que le return te fait sortir de la fonction courrante.

Sinon, si tu veux tester la présence du nom de la ville dans une ligne, tu peux utiliser la fonction strstr() et regarder elle retourne NULL (cas où la chaine n'est pas trouvée) ou autre chose (un pointeur vers la première ocurence de la chaine recherchée). Dans tous les cas fait attention a la casse, 'a' != 'A'.
0
momoko94 Messages postés 6 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 2 mai 2009
2 mai 2009 à 12:08
pour faire strstr il me faut 2 variables or je n'ai que le villemain.nomville, il faut que j'arrive a lire le fichier pour recuper les villes du fichier avec une variable ou alors je me debrouille avec fseek
0
Rejoignez-nous