Un problème avec les structures en C ??!!

IHECinformaticien Messages postés 9 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 29 mars 2009 - 29 mars 2009 à 01:48
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 29 mars 2009 à 14:43
Bonsoir/Bonjour, dans le code source qui suit, j'ai défini un tableau de type structure date( une structure qui contient le jour, le mois et l'année), j'ai défini un pointeur sur ce tableau et j'ai initialisé ce tableau mais le problème c'est que je n'ai pas sut comment imprimer le contenu du tableau et je ne sais plus quel type doit avoir le pointeur???.
Merci infiniment.

#include<stdio.h>
void main()
{
  
    struct date
     {
         int jj;
         int mm;
         int aa;
     };
     struct date T[1];
   ?? *p=T
     T[1].jj=1;
     T[1].mm=10;
     T[1].aa=1955;
  
}

1 réponse

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
29 mars 2009 à 14:43
Salut,

Mêmes remarques que d'habitude, déclare ta structure en dehors de toute fonction et fait donc retourner un int a ta fonction main.

Ensuite, dans ton exemple, T est déjà un pointeur. Si tu veux déclarer un autre pointeur, tu peux le faire en tant que struct date *nom;
Sinon une grave erreur de ta part : un tableau est indexé a partir de ) ! l'«emplacement» 1 d'un tableau correspond a la seconde donnée et 0 a la première. Si tu oublie ceci tu cours droit au segfault.

Pour reprendre ton exemple :

int             main(void)
{
  struct date   t[1];
  struct date   *p_t;

  p_t = t;
  t[0].jj=1;
  t[0].mm=10;
  t[0].aa=1955;
  printf("Jours : %d\nMois : %d\nAnnee : %d\n", t[0].jj, t[0].mm, t[0].aa);
  return 0;
}

Bien entendu tu devrais te faire une fonction spécifiquement dédiée a l'affichage de ta structure.
plutôt que de tout retaper a chaque fois.
0
Rejoignez-nous