IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Manipulation des fichiers en C [Débutant(e)]


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut Manipulation des fichiers en C
    Bonjour à tous et à toutes.

    Voilà j'aurais besoin d'un coup de main sur la création d'une fonction en C.
    Le type de la fonction est ville *lireVilles (FILE *fvilles, int *pnombre) qui lit un fichier texte dont chaque ligne est de la forme : nom ; population.
    De plus, il faut que cette fonction renvoit un tableau de villes et fixe leur nombre dans l'entier pointé par pnombre sachabt que le nombre de villes <= 2000 et que le nom d'une ville ne dépasse pas 100 caractères.
    Ma question se porte donc sur: comment lire un fichier grâce à fopen() ligne par ligne en ne mélangeant pas le nom et la population qui sont séparés par un ; .

    Je vous avouerais que j'ai cherché maintes et maintes fois et que je ne vois toujours pas comment faire donc si quelqu'un a un petit coup de pouce à me donner . Merci beaucoup d'avance !!

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Archy27 Voir le message
    Voilà j'aurais besoin d'un coup de main sur la création d'une fonction en C.
    Montre le code avec lequel tu as un problème.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    Voici le début de code que j'ai pu construire (je suis encore débutant):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    typedef struct {
           char *nom;
           int population;
    } ville;
     
    ville *lireVilles (FILE *fvilles, int *pnombre) {
           ville v;
           int i;
           char tab[1];
           int nombredevilles;
           nombredevilles = *pnombre;
           while (i = fread(tab,sizeof(char),1,fvilles) !=0) {
                 // Comment dissocier le nom de la population sachant
                 // qu'ils sont séparés par un ; 
           }
           ...
           return v;
    }
    J'imagine que l'on doit faire une égalité entre le caractère lu et le ; mais je ne vois pas vraiment comment ??
    Et ensuite il faut pouvoir lire ligne par ligne car là fread() ne me permet que de lire octet par octet (d'où mon tab[1]). Voilà je sais pas si je suis complêtement à côté de la plaque mais malgrès mes recherches je ne vois toujours pas comment résoudre ce problème de débutant .

  4. #4
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Salut,

    Tu peux lire chaque ligne de ton fichier grace à la fonction fgets(). Ensuite tu pourras traiter la ligne grace à strtok() (ou strtok_r()) et ainsi séparer le nom et la population.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 17
    Par défaut
    Merci de tes précieux conseils Freed0.
    Concernant fgets() je l'ai déjà vu quelque part et je saurais m'en servir mais pour strtok() je ne savais même pas que ca existait . Tu pourrais me dire comment elle s'utilise si ce n'est pas trop demandé bien sûr?
    Je sais que fgets() se construit de la manière suivante :

    fgets(char *line, FILE *f)

    mais pour strtok() ???

    Merci d'avance.

  6. #6
    Membre émérite
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Par défaut
    Ton prototype de fgets() est mauvais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *fgets (char *s, int size, FILE *stream);
    Quant à strtok, voici son prototype (j'ajoute celui de strtok_r) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *strtok (char *s, const char *delim);
    char *strtok_r (char *s, const char *delim, char **ptrptr);
    Je ne pourrais pas t'expliquer comment elle fonctionne, mais une page de manuel pourra t'aider sur son utilisation...
    http://www.linux-kheops.com/doc/man/.../strtok.3.html

    Sinon pour extraire la population il faudra utiliser strtol() (ou encore mieux, strtoul() vu que la population est forcément positive ou nulle)

Discussions similaires

  1. manipulation des fichiers Mpeg4
    Par Raùld dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 30/05/2006, 17h43
  2. Manipulation des fichiers avec fstream.
    Par Pragmateek dans le forum SL & STL
    Réponses: 4
    Dernier message: 04/04/2006, 13h12
  3. manipulation des fichiers
    Par felicity dans le forum C
    Réponses: 2
    Dernier message: 29/12/2005, 01h11
  4. Réponses: 1
    Dernier message: 27/11/2005, 14h30
  5. Manipulation des fichiers
    Par monsau dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2004, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo