Lire une variable dans un fichier

Signaler
Messages postés
6
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
2 mai 2009
-
Messages postés
6
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
2 mai 2009
-
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

Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
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'.
Messages postés
6
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
2 mai 2009

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