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 :

tableau à dimension variable


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 11
    Points
    11
    Par défaut tableau à dimension variable
    salut ,

    j'ai un petit un pb :
    je veux déclarer la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct
    {
       char const *Mod, *Sem, *Prom, *Cord;
      Activite act[4];
    }
    Module;
    Activite est la structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
       char *Nom;
       int Ng, Neg, Nhg;
    }
    Activite;
    le pb ici c'est que mon tableau act n'a pas un nombre de ligne fixe . ie le nombre de ses lignes change selon le cas .. comment puis je donc déclarer un tableau qui n'a pas un nombre fixe de lignes ?

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Je ne comprends pas bien ta demande. Tu essaies de faire quelque chose de ce style?

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    struct UneStructure {
        size_t taille; /* Taille du tableau */
        int tableau[1]; /* Tableau souple */
    };
     
    struct UneStructure *creer_structure(size_t taille_tableau)
    {
        struct UneStructure *pself = NULL;
        size_t taille_struct = sizeof *pself + (taille_tableau - 1) * sizeof (int);
     
        pself = malloc(taille_struct);
        if (pself != NULL)
        {
            memset(pself, 0, taille_struct);
            pself->taille = taille_tableau;
        }
        return pself;
    }
     
    int main(void)
    {
        struct UneStructure *s= creer_structure(10);
        if (s != NULL)
        {
            /* traitements sur s */
            free(s), s = NULL;
        }
        return EXIT_SUCCESS;
    }
    où le champ tableau de la structure UneStructure est un tableau souple dont on peut choisir la taille lors de la construction?

    Thierry

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    salut ,

    au fait , c pas ça exactement .
    ce que je veux , c'est comment déclarer le champ act dans la structure Module pour qu'il soit un tableau souple .. c'est à dire dont le nombre de ligne peut varier

  4. #4
    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 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct
    {
       char const *Mod, *Sem, *Prom, *Cord;
      Activite *act;
    }
    Module;
    Et là il faut faire de l'allocation dynamique....

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Et là il faut faire de l'allocation dynamique....
    Et garder une trace de la taille allouée...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    typedef struct
    {
       char const *Mod, *Sem, *Prom, *Cord;
       Activite *act;
       size_t nb_elem;
    }
    Module;

  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 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Et garder une trace de la taille allouée...
    voui mais là je m'attendais à ce qu'il le trouve tout seul..

Discussions similaires

  1. tableau de dimension variable
    Par kapaty dans le forum C
    Réponses: 6
    Dernier message: 05/03/2010, 00h00
  2. Réponses: 11
    Dernier message: 11/06/2008, 18h05
  3. tableau à dimension variable
    Par bubuche87 dans le forum Débuter
    Réponses: 6
    Dernier message: 20/11/2007, 20h21
  4. [débutant] un tableau de dimension variable selon l'objet qui le contient
    Par Epistocles dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 09/01/2007, 18h07
  5. tableau à dimension variable
    Par Phoenix_Blue dans le forum C++
    Réponses: 17
    Dernier message: 18/11/2006, 14h17

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