Comment imprimer une structure à l'aide d'un pointeur??

IHECinformaticien Messages postés 9 Date d'inscription jeudi 19 février 2009 Statut Membre Dernière intervention 29 mars 2009 - 27 mars 2009 à 21:21
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 27 mars 2009 à 21:41
Bonjour, j'ai définit une structure date contenant 3 champs de type entier pour identifier le jour, le mois & l'année. Ensuite j'ai initialisé une variable de type structure date & je l'ai imprimé à l'aide d'une variable. Mon problème c'est que je ne sais pas comment imprimer la structure à l'aide d'un pointeur. Voici le code source que j'ai écrit. Merci beaucoup.

#include<stdio.h>
void main()
{
    struct date
    {
        int jj;
        int mm;
        int aa;
    };
    struct date journee={27,03,2009};
printf("Le jour est %d\n",journee.jj);
printf("Le mois est %d\n",journee.mm);
printf("L'annee est %d\n",journee.aa);   

}

1 réponse

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

L'opérateur de déréférencement (l'astérisque *) est ton ami ainsi que la «flèche» -> qui est un raccourcit utile dans ton cas.

Un exemple de code complet :

#include
#include <stdio.h>

struct  date
{
  int   jj;
  int   mm;
  int   aa;
};

static int      affiche_date(struct date *date)
{
  if (date == NULL)
    return -1;
  printf("Le jour est %d\n", (*date).jj);
  printf("Le mois est %d\n", date->mm);
  printf("L'annee est %d\n", date->aa);
  return 0;
}

int     main(void)
{
  struct date journee = {27,03,2009};
  return affiche_date(&journee);
}

Tu remarquera que j'ai utilisé deux méthodes différentes équivalentes. La première est surtout là a titre indicatif, en général on utilise la seconde.

Quelques autres petites remarques :
 - déclare donc ta structure en dehors de toute fonction (dans un .h serais le mieux)
 - fait donc retourner un int a main (code d'erreur, 0 pour "aucune erreur" et autre chose que 0 en cas d'erreur)
0
Rejoignez-nous