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 :

appel d'une fonction, listes chainées, écriture dans un fichier


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 20
    Points
    20
    Par défaut appel d'une fonction, listes chainées, écriture dans un fichier
    Bonjour,

    j'ai créé une fonction pour écrire une liste chainée dans un fichier.txt. Tout fonctionne, mais une fois la chaine écrite les informations contenues semble perdue, des caractères étrange remplace les données. Je ne comprends pas, car la fonction reçoit en argument la tête, mais pas un pointer, elle ne peut donc pas modifier la tête .. n'est-ce pas...?

    voici le code de la fonction :
    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 saveFaits(char* fichier_fait, S_FAIT* liste_des_faits){
    	FILE *pt_fichier=NULL;
    	char *ligne_fait=NULL;
    	S_FAIT* courant=liste_des_faits;
    	// ouverture du fichier en ecriture de texte
    	if ( (pt_fichier=fopen(fichier_fait,"w"))){
    		// boucle sur chaque fait
    		while(courant != NULL)
    		{
    			// recup du fait au format texte
    			ligne_fait = courant->Data_fait;
    			// ecriture du fait dans le fichier ouvert
    			fprintf(pt_fichier,ligne_fait);
    			fprintf(pt_fichier,"\n");
    			// liberation de la memoire allouee au fait
    			free(ligne_fait);
    			// saut sur le fait suivant
    			courant = courant->suiv;
    		}
    		// fermeture du fichier
    		fclose(pt_fichier);
            printf("%s",liste_des_faits->Data_fait);
    	}
    }
    Merci, bonne journée

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    La destruction des données après leur écriture dans le fichier est explicitement faite dans le code par
    Ce qui détruit les données de la liste (et qui rend invalide tout accès à ces données)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 47
    Points : 20
    Points
    20
    Par défaut
    Effectivement ...

    Je ne pensais pas que cela influerait sur la liste elle-même.

    Merci pour tes lumières.

    bonne soirée

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/03/2015, 18h11
  2. Réponses: 2
    Dernier message: 20/06/2007, 12h12
  3. Réponses: 1
    Dernier message: 16/06/2006, 16h12
  4. Réponses: 4
    Dernier message: 02/06/2004, 16h35

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