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 :

enregistrer une liste chainée dans un fichier?


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut enregistrer une liste chainée dans un fichier?
    Bonjour je suis nouveau dans le forum et dans la programmation.
    Je voudrais enregistré une liste chainée dans un fichier et y faire des mise à jour. J'ai réussi à faire la liste chainée elle fonctionne correctement. Si quelqu'un pourrait me donner un petit cours ou un exemple pour enregistré dans un fichier et réutilisé la liste chainée se serait gentils.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: enregistrer une liste chainée dans un fichier?
    Citation Envoyé par ALF-Teams
    Bonjour je suis nouveau dans le forum et dans la programmation.
    Je voudrais enregistré une liste chainée dans un fichier et y faire des mise à jour. J'ai réussi à faire la liste chainée elle fonctionne correctement. Si quelqu'un pourrait me donner un petit cours ou un exemple pour enregistré dans un fichier et réutilisé la liste chainée se serait gentils.
    Une liste chainée est une organisation des données en mémoire. Ca n'a aucun sens de l'enregistrer. Ce sont les données qui doivent être enregistrées.

    C'est simple.
    • définir le type du fichier (je recommande texte)
    • définir un format d'enregistrement (je recommande un format texte genre CSV)
    • parcourir la liste en enregistrant les données séquenciellement (càd naturellement) dans le fichier.

    http://emmanuel-delahaye.developpez....s.htm#fichiers
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    oui tu as compris mon probléme, je fais essayer de le faire avec les infos que tu m'as donnée merci si je n'y arrive pas je le dirai.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    tu n'as qu'à écrire tes données comme dans un tableau.
    Boost ftw

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Dernière couche :
    ecriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ouvrir fichier texte en ecriture
    se positionner en début de liste
    tant que qu'on n'est pas en fin de liste faire
       ecrire les données du noeud courant
       passer au noeud suivant
    fin tant que
    fermer fichier texte;
    lecture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ouvrir le fichier en lecture
    tant que (donnees <-lire(les données)) != données-vides faire
      allouer un nouveau noeud
      positionner en fin de liste le nouveau noeud
    fin tant que
    fermer le fichier
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Attention par contre si tu passes par une écriture/lecture par bloc avec fread()/fwrite(). Dans ce cas, il faut définir la structure en séparant les données utiles et les pointeurs de chaînage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct {
    int a ;
    char b ;
    }DATA ;
     
    typedef struct list {
     DATA data ;
     struct list *next ;
    }*LIST ;
    Sinon, lors de la lecture, il y a aura un problème avec le pointeur "next". Si tu n'as pas compris ce que je voulais dire, laisses tomber

    Nas'

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par Nasky
    Sinon, lors de la lecture, il y a aura un problème avec le pointeur "next". Si tu n'as pas compris ce que je voulais dire, laisses tomber

    Nas'
    ben non justement, qu'il essaye et il verra que la mémorisation de la valeur d'un pointeur est stupide
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Membre averti Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Points : 307
    Points
    307
    Par défaut
    Declarer votre liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    typedef struct list { 
     DATA data ; 
     struct list *next ; 
    };
     
    struct list *first_element, *current_elem;
    declarer un pointeur de fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     FILE  *fiche; // FILE en majuscule
    ouvrire le fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fiche=fopen("le chemin","w+");
    // "w+" : si le fichier n'existe pas il est créé, s'il existe on ecrit au dessus.
    ecriture dans le fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    current_elem=first_element;
    while(current_elem!=NULL)
    {
      fprintf(fiche,"%le_format \n",current_elem->data);
      current_elem=current_elem->next;
    }
     
    fclose(fiche);
    pour la lecture, vous pouvez utiliser fscanf.
    "Un remboursement des programmes défectueux serait envisageable mais toute l'industrie du logiciel ferait faillite la première année." Andrew Tanenbaum.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher une liste chainée dans un text_view
    Par Gaara93 dans le forum GTK+ avec C & C++
    Réponses: 13
    Dernier message: 21/01/2009, 17h08
  2. mapper une liste xml dans un fichier Excel.
    Par maa dans le forum Excel
    Réponses: 1
    Dernier message: 21/08/2007, 15h42
  3. Enregistrer une table Access dans un fichier "XML"
    Par kmaniche dans le forum C++Builder
    Réponses: 21
    Dernier message: 31/05/2007, 22h19
  4. Réponses: 5
    Dernier message: 25/04/2006, 09h33
  5. [Stratégie]Sauvegarde d'une liste chainée dans un fichier
    Par BernardT dans le forum Général Java
    Réponses: 17
    Dernier message: 25/07/2005, 17h04

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