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 :

Fonction qui renvoit un tableau de structure contenant des chaines de caractères


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
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Par défaut Fonction qui renvoit un tableau de structure contenant des chaines de caractères
    Bonjour à tous,

    Voila, j'ai une erreur de segmentation. J'ai utilisé gdb, mais ça n'a rien donné.
    Je pense que c'est une erreur d'allocation.

    Pouvez vous m'éclairer s'il vous plait?

    J'essaye de lire ce fichier ( sauvegarde.txt) :

    test;272003;9964;Sun Jul 3 15:36:54 2011
    sauvegardeNbFichier.txt;272149;1;Sun Jul 3 15:36:03 2011
    teststruct.txt;272144;0;Sun Jul 3 15:36:56 2011
    projetcorrige.c;272129;3561;Sun Jul 3 15:36:38 2011
    ..;271152;4096;Tue Jun 28 10:30:24 2011
    sauvegarde.txt;272148;0;Sun Jul 3 15:36:56 2011
    .;271372;4096;Sun Jul 3 15:36:54 2011


    Pour remplir la structure suivante, avec la fonction lireSauvegarde.

    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
     
    struct fic{
        long inode;
        char * nom;
        int taille;
        char *dateModif;
    }; 
     
     
    FIC * lireSauvegarde()
    {
        int i;
        int nb=lireNbFicSauvegarde();
     
        FIC *fichiers;
        fichiers=(FIC *)malloc(nb*sizeof(FIC));
     
        FILE* fichier = NULL;
        fichier = fopen("sauvegarde.txt", "r");
     
        for(i=0;i<nb;i++)
        {
            fichiers[i].nom=(char *)malloc(40*sizeof(char)); 
            fichiers[i].dateModif=(char *)malloc(60*sizeof(char));
            fichiers[i].inode=(long)malloc(1*sizeof(long)); 
            fichiers[i].taille=(int)malloc(1*sizeof(int)); 
            fscanf(fichier, "%s;%ld;%d;%s", &(fichiers[i].nom), &(fichiers[i].inode), &(fichiers[i].taille),&(fichiers[i].dateModif));
            printf("%s;%ld;%d;%s\n", fichiers[i].nom,fichiers[i].inode, fichiers[i].taille,fichiers[i].dateModif);
        }
     
     
        return fichiers;
     
    }

    Merci d'avance pour votre aide les amis

  2. #2
    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
    Il y a des choses incohérentes dans ton code.

    Premièrement, dans ta structure, tu as deux membres de type entier. Or, tu leur donnes une adresse comme valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fichiers[i].inode=(long)malloc(1*sizeof(long)); 
    fichiers[i].taille=(int)malloc(1*sizeof(int));
    Cela n'a aucun sens.

    Ensuite, tu ne donnes pas les bonnes valeurs à fscanf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fscanf(fichier, "%s;%ld;%d;%s", &(fichiers[i].nom), &(fichiers[i].inode), &(fichiers[i].taille),&(fichiers[i].dateModif));
    En rouge : tu envoies à la fonction non pas l'adresse de l'objet pointé mais l'adresse du pointeur lui-même. Du coup, la fonction va écraser la valeur du membre... et, par débordement, ceux qui suivent.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/05/2015, 12h21
  2. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 01h04
  3. [VB] Fonction qui retourne un tableau
    Par ptitsoleil87 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 24/12/2005, 10h52
  4. Fonction qui renvoie un tableau?
    Par elm dans le forum C
    Réponses: 23
    Dernier message: 21/12/2005, 12h44
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06

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