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 :

Malloc de tableau dans structure.


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Points : 57
    Points
    57
    Par défaut Malloc de tableau dans structure.
    Bonjour tout le monde !

    Un petit message qui ne devrait normalement pas vous poser de problèmes, mais qui me pose quelques soucis ...

    J'ai deux structures :
    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
    /*Definition d'un étudiant */
    typedef struct
    {
        char matricule[25]; /* Matricule unique. */
        char nom[20];
        char prenom[20];
        Adresse adr;
        double tabCotes[5];
        double moyennePourcentage;
    }Etudiant;
     
     
    //Definition d'une classe
    typedef struct
    {
        int nbEtudiants;
        Etudiant *classe; // Classe d'étudiant. (Tableau)
        int compteurMatricule;
    }Auditoire;
    Je veux "mallocer" le Tableau d'étudiant (structure auditoire).
    Pour cela, je lis les éléments présents dans un fichier binaire, dont voici le code source :
    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 chargerEtudiants(Auditoire *auditoireA)
    {
        FILE* listeEtudiants = NULL;
     
        listeEtudiants = fopen(DOC, "rb");
     
        fread(auditoireA, sizeof(Auditoire), 1, listeEtudiants);
     
        fclose(listeEtudiants);
     
        printf("Chargement effectue des étudiants en memoire effectue !\n");
        printf("il y a %d etudiants dans le fichier.\n\n", auditoireA->nbEtudiants);
     
     
        /*
        Initialisation du compteur de matricule (HE201XXX) au nombre d'étudiants présents
        EX : S'il y a déjà 3 étudiants dans le fichier, le compteur sera à 201003
        Car le prochain étudiant aura ce matricule là.
        */
     
        auditoireA->compteurMatricule = 201000 + auditoireA->nbEtudiants + 2;
     
        system("PAUSE");
     
        afficherMenu(auditoireA);
     
    }
    Je pensais donc Mallocer le tablea d'étudiant en faisant, dans la méthode chargerEtudiants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    auditoireA->classe = malloc(auditoireA->classe, sizeof(auditoireA->nbEtudiants * Etudiants
    Malheureusement, cela ne fonctionne pas, et je ne sais pas trop comment m'y prendre ...

    En espérant avoir une réponse de votre part,

    Je vous souhaite une excellente journée !

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    malloc() ne prend qu'un seul paramètre, pourquoi essayes-tu de lui en donner deux ? Enfin, je dis 2 mais je ne sais pas trop, tu n'as pas refermé les parenthèses... Malloc prend en paramètre la taille à réserver, en octets. C'est donc la taille d'un élément (obtenu avec sizeof) multiplié par le nombre d'éléments (que tu as déterminé).

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Points : 57
    Points
    57
    Par défaut
    Merci de ta réponse !

    Mais en écrivant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    auditoireA->classe = malloc(sizeof(auditoireA->nbEtudiants * Etudiant));
    J'obtiens tout de même une erreur.

    Pourquoi ?

    EDIT : Problème résolu ... !!

    Merci de ton aide !

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

Discussions similaires

  1. tableau dans structure
    Par tom31 dans le forum C++
    Réponses: 2
    Dernier message: 06/03/2008, 15h32
  2. Réponses: 32
    Dernier message: 11/03/2007, 11h25
  3. Réponses: 2
    Dernier message: 05/02/2007, 16h16
  4. Allocation dynamique tableau dans structure
    Par chental dans le forum C
    Réponses: 2
    Dernier message: 03/08/2006, 09h03
  5. [XSL-FO] Modifer une structure de tableau dans for-each
    Par serwol dans le forum XSL/XSLT/XPATH
    Réponses: 24
    Dernier message: 17/06/2005, 17h38

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