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 :

Problème de lecture de fichier binaire composé de structures [Débutant(e)]


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Points : 104
    Points
    104
    Par défaut Problème de lecture de fichier binaire composé de structures
    Bonjour à tous,

    voici mon problème, j'ai une fonction qui me permet de sauvegarder dans un fichier binaire les données de ma structure. Cela se passe sans problème, par contre pour la lecture de se fichier, là ca coince. Si je comprends bien mon debugger, chaque nouvelle lecture est assignée à la variable nSkieur qui est toujours à la même adresse et pareil pour ma variable data.
    Comment puis je faire pour que cela ne se passe pas?


    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
    25
    26
    27
     
    void ChargementListe(bornes *lst){
     
    	FILE *fChargement;
    	PElement data = (PElement) malloc (sizeof(element));
    	skieur *nSkieur = (skieur*) malloc (sizeof(skieur));
     
    	fChargement = fopen("d:\\data.bin","rb");
     
    	if( !fChargement ){
    		printf("Erreur d'ouverture de fichier\n");
    	}
    	else{
    		while(fread(nSkieur, sizeof(skieur), 1, fChargement)){
    			//debug
    			printf("1...%d\n",nSkieur->idLicenceFis);
    			printf("2...%s\n",nSkieur->nom);
    			_getch();
    			//end debug
    			data->type = nSkieur;
    			AjouterEnFinDeListe(lst,data);
    			//PElement data = (PElement) malloc (sizeof(element));
    			//skieur *nSkieur = (skieur*) malloc (sizeof(skieur));
    		}
    	}
    	printf("Fichier lut\n");
    	fclose(fChargement);

  2. #2
    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
    Ben oui, c'est normal : que fais-tu
    Tu donnes à type toujours la même adresse nSkieur

    Il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data->type = malloc((sizeof skieur); 
    // sans cast, on est en C, enfin je supose (pas de .cpp ...)
    if (data->type != NULL)
      memcpy(data->type, nskieur, sizeof skieur);

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    Merci, je vais essayer de ce pas.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 97
    Points : 104
    Points
    104
    Par défaut
    Trap D, ca n'a pas marché ta solution. Par contre, encore une fois, j'ai fais le boulet, car je me suis rendu compte ce matin qu'en remplacant ceci dans ma boucle while:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PElement data = (PElement) malloc (sizeof(element));
    skieur *nSkieur = (skieur*) malloc (sizeof(skieur));
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    data = (PElement) malloc (sizeof(element));
    nSkieur = (skieur*) malloc (sizeof(skieur));
    Mais j'ai du mal à comprendre. Si une bonne âme pouvait me rendre plus intélligent sur ce point.

  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
    Tu pourrais détailler les structures pElement et skieur.
    Attention, si tu as besoin du cast c'est que tu fais du C++ pas du C, donc c'est la porte à côté.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    ben pourquoi tes 2 allocs en fin du while sont en commentaires ??

    Il n'y aurait plus les commentaires, ça marcherait mieux....

    Par contre, il faut tester (y compris au début) le fait que les allocs se soient bien passées...

Discussions similaires

  1. Problème de lecture de fichiers binaires
    Par -Gesicht- dans le forum Débuter
    Réponses: 7
    Dernier message: 05/07/2013, 17h15
  2. Problème lecture de fichier binaire
    Par -N4w4k- dans le forum C#
    Réponses: 3
    Dernier message: 16/02/2013, 22h16
  3. Réponses: 7
    Dernier message: 31/10/2010, 15h39
  4. probléme lecture de fichier binaire octer par octet
    Par ousmanesidibe dans le forum C++
    Réponses: 2
    Dernier message: 12/12/2009, 21h34
  5. [POI] Problème de lecture des fichiers Word
    Par Dari dans le forum Documents
    Réponses: 9
    Dernier message: 05/07/2007, 14h08

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