Typedef

Résolu
Bonjour,
bjr, est ce que vous pouvez me dire comment on uitilise un "typedef" dans une structure.
je note que notre prof ns a dit qu'on utilise ce mot cle pour changer un nom s'il trop long par un autre plus petit.
ex:
struct date naissance;
{
int.....
};
typedef date naissance DATE;
merci de répondre tré vite.
Configuration: Windows Vista
Internet Explorer 8.0

4 réponses

  1. Contributeur
    Bah, je viens de te donner la solution dans le post ...
    typedef struct dateNaissance dateNaissance;
    struct dateNaissance;
    {
    int.....
    }; 
    De plus, attention au nom de ta structure, tu n'as pas le droit de mettre des espaces, c'est pour ça que je te l'ai corrigé en dateNaissance.
    
    1. merci cété vraiment la probléme.
      donc si je veu changer le dateNaissance en DATE ,j'aurai qu'a faire ce ke tu m'a dit en changeant simplement comme ca:
      typedef struct dateNaissance DATE;
      struct DATE;
      {
      int...
      };
      mais ce ";" aprés le DATE me parais absurde...
      tt fois mm si je l'utilise ac ou sans ";" il me donne préske "30" erreur dans mon code.
      si tu veut je peu t'envoyer mon code pour l'examiner.
      merci
    2. Contributeur
      @sifane.apresque.
      En :
      typedef struct dateNaissance DATE;
      struct dateNaissance
      {
      int...
      }; 
      
      DATE toto; //pour déclarer une structure dateNaissance (plus besoin d'utiliser le mot clé struct.
      


      Et effectivement pour le point virgule après struct. Une faute d'inattention. :)
    3. @fiddybn dsl,mais tu vas travailler un peu ac moi :
      voila un programme qui affiche les infos d'un etudiant entrés au clavier:
      #include<stdio.h>
      #define etd 2;
      typedef struct etudiant E;
      struct etudiant
      {
      char nom[10];
      char prenom[10];
      char adresse[20];
      typedef struct dateNaissance DATE;
      struct dateNaissance
      {
      int jour;
      int mois;
      int annee;
      };

      };

      main()
      {
      int etudiant[etd];
      int i;
      for(i=0;i<etd;i++)
      {
      printf("nom");
      scanf("%s",&etudiant[i].nom);
      printf("prenom");
      scanf("%s",&etudiant[i].prenom);
      printf("jour naissance");
      scanf("%s",&etudiant[i].DATE.jour);
      printf("mois");
      scanf("%s",&etudiant[i].DATE.mois);
      printf("annee");
      scanf("%s",&etudiant[i].DATE.annee);
      printf("adresse");
      scanf("%s",&etudiant[i].adresse);
      }
      for(i=0;i<etd;i++)
      {
      printf("%s",etudiant[i].nom);
      printf("%s",etudiant[i].prenom);
      printf("%s",etudiant[i].DATE.jour);
      printf("%s",etudiant[i].DATE.mois);
      printf("%s",etudiant[i].DATE.annee);
      printf("%s",etudiant[i].adresse);
      }
      }
      j'arrive a des erreur que je ne sais pas corriger, je tape simplement ce que j'ai apris et je me plante.
      un coup de main svp.
      merci.
    4. @sifane.asvp,je suis entrain de metre des modification mais le probléme subsiste,merci de m'aider.
  2. Contributeur
    Salut
    typedef struct dateNaissance dateNaissance;
    struct dateNaissance;
    {
    int.....
    }; 
    

    Tu peux même inclure le typedef dans truct directement :
    typedef struct dateNaissance {
    int ...
    } dateNaissance;
    

    1. merci fiddy,donc si je veu apliker cela a l'exemple ke jé présenté avant,ca serai.....
    2. svp qu'elle est la faute ici
      typedef struct date {
      int jour;
      int mois;
      int annee;
      }date;
    3. Contributeur
      Bonjour,
      Il n'y a pas de fautes dans ton code...
  3. Contributeur
    Salut
    J'ai corrigé quelques fautes (notamment le ; après le define)
    Là il restera à voir les problèmes de buffer clavier.
    Cdlt
    #include<stdio.h>
    #define etd 2 
    typedef struct dateNaissance DATE;
    struct dateNaissance
    {
        int jour;
        int mois;
        int annee;
    };
    typedef struct etudiant E;
    struct etudiant
    {
        char nom[10];
        char prenom[10];
        char adresse[20];
        DATE date;
    };
    
    int main(void)
    {
        E etudiant[etd];
        int i;
        for(i=0;i<etd;i++)
        {
            printf("nom");
            scanf("%s",etudiant[i].nom);
            printf("prenom");
            scanf("%s",etudiant[i].prenom);
            printf("jour naissance");
            scanf("%d",&etudiant[i].date.jour);
            printf("mois");
            scanf("%d",&etudiant[i].date.mois);
            printf("annee");
            scanf("%d",&etudiant[i].date.annee);
            printf("adresse");
            scanf("%s",etudiant[i].adresse);
        }
        for(i=0;i<etd;i++)
        {
            printf("%s",etudiant[i].nom);
            printf("%s",etudiant[i].prenom);
            printf("%d",etudiant[i].date.jour);
            printf("%d",etudiant[i].date.mois);
            printf("%d",etudiant[i].date.annee);
            printf("%s",etudiant[i].adresse);
        }
        return 0;
    } 
    
    1. je suis trs reconnaissant ,le programme tourne bien ,c'est la partis la plus simple,le but de ce programme n'été po seulement a afficher mais a un autre but, je vais continuer et si je me trouve encor dans un probléme je vs poste le sujet.
      encor merci ,chui trop content :)