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 :

Listes chaînées et fichiers binaires


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Par défaut Listes chaînées et fichiers binaires
    Bonjour,

    J'ai sauvegardé mes listes chaînées dans un fichier texte binaire. Seulement, je ne sais pas comment reconstruire ma liste chaînée à partir de ce fichier binaire. Je ne vois pas comment utiliser fread. En fait, ce qui me pose problème, c'est que je ne sais pas comment se reconstruit la liste à partir de fread.

    Merci par avance.

  2. #2
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut
    il faudrai que tu nous montre comment tu les a enregistrés ! on peut pas savoir !
    et montre ton code aussi stp !
    et tu entend quoi par "fichier texte binaire" ??

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 12
    Par défaut
    lol effectivement un fichier texte binaire, ca veut rien dire Je voulais tout simplement parler d'un fichier BINAIRE uniquement.
    Ma structure est définie ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct noeud
    {
         char nom[20];
         struct noeud *next;
    }noeud;
     
    typedef noeud *Pnoeud;
    Voici ma fonction de sauvegarde :
    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
    19
    20
    21
    22
    23
    24
     
    void sauvegarde(pNoeud tete, char *nom_fic)
    {
    	FILE *dest;
     
    	dest = fopen(nom_fic, "wb");
     
    	if(tete != NULL)
    	{
    		while(tete != NULL)
    		{
    			fwrite(&tete, sizeof(noeud), 1, dest);
    			tete = (tete)->next;
    		}
    	}
    	else
    	{
    		printf("Il n'y a rien a sauvegarder");
    		system("pause");
    	}
     
     
    	fclose(dest);
    }
    Maintenant je ne sais pas du tout quelle principe utiliser pour lire le fichier et reconstruire la liste chaînée.
    Je n'arrive pas à utiliser fread, je ne sais pas si il se charge de réserver la mémoire ou si c'est à moi de le gérer.
    J'espère que cette fois ci j'ai été assez claire,
    Encore merci pour ton intérêt ^^

  4. #4
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par asgardia
    Je n'arrive pas à utiliser fread, je ne sais pas si il se charge de réserver la mémoire ou si c'est à moi de le gérer.
    Non fread() ne reserve pas de memoire, c'est a toi de le faire. fread() se contente de lire le contenu du fichier et de le placer a l'endroit specifier, c'est a l'appelant de s'occuper de la reservation de la memoire et de la coherence des parametres.

    En outre dans ton ecriture, tu sauvegarde la structure complete, pointeur sur l'element suivant compris, or sauvegarder une adresse n'a pas de sens, lors de l'execution suivante, cette valeur ne correspondra pas.
    Il n'y a en fait que le "contenu utile" du maillon a stocker et a relire en reconstruisant la liste chainee a la volee lors de la lecture.
    Le seul "probleme" etant de parvenir a differencier les maillons les uns des autres dans le fichier.
    Dans un cas simple ou la longueur est identique pour tous (comme dans ton exemple) il suffit de se baser sur la longueur d'un maillon.
    Dans des cas ou la taille des donnees varient, il faut mettre en oeuvre des mecanismes plus complexes : chaque maillon sur une ligne de texte complexe, CSV, BER-TLV, etc.

Discussions similaires

  1. Comment lire une chaîne dans un fichier binaire?
    Par dot-_-net dans le forum Débuter
    Réponses: 9
    Dernier message: 18/05/2008, 23h13
  2. Réponses: 3
    Dernier message: 25/10/2007, 21h57
  3. Réponses: 3
    Dernier message: 16/10/2007, 13h50
  4. Problème listes chaînées et fichier texte
    Par khayyam dans le forum Pascal
    Réponses: 2
    Dernier message: 24/01/2007, 20h11
  5. listes chaînées/fichiers je bloque
    Par ghislain118 dans le forum C
    Réponses: 14
    Dernier message: 21/12/2005, 08h24

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