Tableau contenant des references de structure

adrien -  
lami20j Messages postés 21644 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

1 réponse

lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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