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 d'un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1
    Par défaut problème de lecture d'un fichier
    Bonjour à tous,

    J'ai un problème avec un fichier

    J'enregistre dans ce fichier des structures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct
    { 
         int        OffSet;
         short      Longueur;
         char       Donnee[255];
    } ELEMENT;
    Ensuite je dois afficher le contenu du fichier en lisant 2 enregistrements à la fois. Mais lorsque j'essaye d'afficher, soit j'ai la même ligne qui s'affiche en boucle, soit j'ai un message d'erreur: "Segmentation Fault (core dumped)"

    D'après ce que j'ai compris, ce serait un problème de pointeur mais je n'arrive pas à le résoudre.

    Je tiens à préciser que je suis sur une machine virtuelle solaris, ce qui normalement ne change rien.

    Voici ma fonction d'affichage:

    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
    28
    29
    30
    31
    32
    33
    34
    int Liste(FICHIER F)
    {
        printf("Liste du fichier : %s\n------------------\n",F.NomFichier);
     
        int fin = 0;       // Variable qui me permet de voir si je suis en fin de fichier
        int ret = 1;      // Variable qui récupère la valeur de retour de fread
     
        FILE* fp;        // mon pointeur de fichier
        ELEMENT Elm; // ma structure
     
        rewind(fp);     // je replace le pointeur au début du fichier
     
        do
        {
     
    	fin = feof (fp);    // je vérifie que je ne suis pas à la fin de mon fichier
    	if(fin != 0)
    	{
    		return 1;   // Si je suis à la fin, je quitte la fonction d'affichage
    	}
            ret = fread(&Elm,sizeof(Elm),2,fp);   // Je lis 2 enregistrements de mon fichier
            printf("%d\t",Elm.OffSet);
            printf("%hd\t",Elm.Longueur);
            puts(Elm.Donnee);
            printf("\n");                                 // J'affiche
            printf("%d\t",Elm.OffSet);
            printf("%hd\t",Elm.Longueur);
            puts(Elm.Donnee);
            printf("\n");
            fin = feof (fp);                            // Je revérifie si je suis à la fin du fichier
        }while(fin == 0);                             // Si je ne suis pas à la fin, je boucle pour afficher les enregistrements suivant
     
    return 0;
    }
    Merci pour vos réponses.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Première chose que je vois c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FILE* fp;        // mon pointeur de fichier
    ELEMENT Elm; // ma structure
     
    rewind(fp);     // je replace le pointeur au début du fichier
    Et bizarrement, déjà fp pointe sur n'importe quoi (valeur non déterminé) de plus le fichier n'est pas ouvert O_o.

    Une fois que vous aurez corrigé l'ouverture du fichier, n'oubliez pas de le fermer après utilisation
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ELEMENT Elm; // ma structure
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ret = fread(&Elm,sizeof(Elm),2,fp);
    Tu tentes de mettre deux enregistrements alors qu'il n'y a de la place que pour un.

    Il aurait plutôt fallut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     ELEMENT Elm[2];
    ...
    ret = fread(Elm,sizeof(ELEMENT),2,fp);

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fread(&Elm,sizeof(Elm),2,fp);
    Ceci pose deux problèmes :
    _ celui évoqué par mabu.
    _ la non-portabilité de cette méthode. Ce code écrit "tel quel" en mémoire ce qui est lu dans le fichier, sans tenir compte de l'endianess, de la taille des types et de l'alignement, sur la machine qui lit ces données.

Discussions similaires

  1. [VBnet] Problème de lecture d'un fichier texte.
    Par dibeloni dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/03/2006, 19h12
  2. [VB6] Problème de lecture d'un fichier excel
    Par Requin15 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/03/2006, 17h10
  3. Problème de lecture d'un fichier
    Par rvweb dans le forum C++
    Réponses: 3
    Dernier message: 30/12/2005, 21h03
  4. Réponses: 2
    Dernier message: 28/12/2005, 15h00
  5. Problème de lecture dans un fichier xml
    Par Pyra dans le forum Langage
    Réponses: 2
    Dernier message: 18/12/2005, 00h13

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