Tableau contenant des references de structure

adrien -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
bonjour à tous !!

En language C
voila jaimerais realiser un tableu où chaque case pointe sur une structure...
En effet a chaque case jaimerai avoir accés a une structure qui serai remplie differament.

par exemple avec un structure affectation

struct affectation {
int valeur;
char variable;
};
typedef struct affectation *aff;

comment doit je declarer mon tableau et comment que faut t-il que je mette dedans...Auriez vous un exemple ... Aider un pauvre debutant en langage C
Configuration: Windows XP
Opera 9.02

1 réponse

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    en attendant la réponse d'un pro ....

    ta structure a la forme

     ------------------   
    | ---------------- | 
    ||[valeur][lettre]|| 
    | ---------------- |
     ------------------  
    si j'ai besoin de saisir 3 elements je dois allouer 3 cases

    aff = (struct affectation *) malloc(3 * sizeof(struct affectation))
    
               Un tableau de structures de 3 éléments
    
    --------------------------------------------------------------
    | ---------------- | | ---------------- | | ---------------- |
    ||[valeur][lettre]|| ||[valeur][lettre]|| ||[valeur][lettre]||
    | ---------------- | | ---------------- | | ---------------- |
    --------------------------------------------------------------
        CASE 0                  CASE 1              CASE 2

    Et voici le code
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
      int termine=0,c,nb,i=0,elem;
      struct affectation {
                         int valeur;
                         char lettre;
      };
      struct affectation *aff;
    
    /* affichage de la taille de la structure affectation
    * qui contient un integer et un char
    */
      printf("Taille structure initiale: %d\n",sizeof(struct affectation));
    
    /* choisir le nombre d elements
    * qu on veuille saisir
    * qui veut dire que pour un nombre N d elements
    * on devra saisir N fois 
    * une valeur et une lettre
    */
      printf("Entrez le nombre d'éléments : ");
      scanf("%d",&elem);
    
    /* allocation de la mémoire
    * nombre d elements * taille de la structure
    */
      aff = (struct affectation *) malloc(elem * sizeof(struct affectation));
    
    /* la taille de tableau de structures
    * apres l allocation de la memoire
    */
      printf("Taille de tableau de structures : %d x %d = %d\n",
             elem,sizeof(struct affectation),elem * sizeof(struct affectation));
    
    
    /* TANT QUE je n entre pas -1
    * ET le compteur est  plus petit
    * que le nombre d element
    *
    * plus petit puisque l indice de tableau
    * commence à zero
    * donc les indices de tableau
    * seront 0, 1 et 2
    */
      while(! termine && i < elem){
        printf("Entrez une valeur (-1 pour quitter): ");
        scanf("%d",&(aff[i].valeur));
    
    /* je compare la valeur saisie
    * avec -1
    * si le test et vrai
    * alors je sors de la boucle
    */
        termine=(aff[i].valeur==-1);
    
    /* vider le buffer */
        c=getchar();
    
    /* SI on n a pas taper -1
    * on continue la saisie
    */
        if (! termine){
          printf("Entrez une lettre : ");
          scanf("%c",&(aff[i].lettre));
          i++;
        }
    }
    
    /* sauvegarde de nombre d elements
    * saisies
    */
      nb=i;
    
    /* affichage */
      for(i=0;i<nb;i++)
        printf("valeur = %d et lettre = %c\n"
              ,aff[i].valeur,aff[i].lettre);
    return 0;
    }
    
    --
    Joyeux Noël
    lami20j
    1