Besoin d'explication sur les structures en c

Bonjour,
On me demande de faire un agenda voici se que j'ai commencer...:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//Définition des variables a types personnels
/*
typedef date;
typedef heure;
typedef jour;
typedef rendezvous;
*/

//Définitons des structures personnelles
typedef struct {
char jnom;
int j;
int m;
int a;
} date;

typedef struct {
int h;
int hm;
} heure;

typedef struct {
int existe;
char d;
char table[10];
heure debut;
heure fin;
} rendezvous;

typedef struct {
int j;
char jnom;
} jour;

//Énumeration des jours et des mois
enum ejours{lundi=1,mardi=2,mercredi=3,jeudi=4,vendredi=5,samedi=6,dimanche=7};
enum emois{janvier=1,fevrier=2,mars=3,avril=4,mai=5,juin=6,juillet=7,aout=8,septembre=9,octobre=10,novembre=11,decembre=12};

//Fonctions périphérique
void affichejour(jour x);

//Bloc principal
int main() {
/* GROS BORDEL
Rendezvous R[12][31];
//Initialisation du tableau à faire
Rendezvous x=nouveaurendezvous();
afficherendezvous(x);
enregistrer(x);
x=nouveaurendezvous();
enregistrer(x);
mesrendezvous();
*/

//Debug de affiche jour
jour debug;
printf("Entrez un jour au format: NumeroDuJour NomDuJour\n");
scanf("%d %c",&debug);
affichejour(debug);

printf("Appuyez sur Entrer pour continuer...\n");
getchar();
getchar();
return 0;
}

void affichejour(jour x) {
char ret = x.jnom;
printf("Ha: %c\n",ret);
}

le truc c'est que je ne sais pas comment appelé la structure entant que parametre dans une fonction!!!
Pouvez vous m'aider svp???
Merciiii!!!!!
Configuration: Linux
Firefox 2.0.0.12

4 réponses

  1. Bonjour,

    Comme n'importe quel autre type en fait...

    void afficherHeure( heure h )
    {
       printf( "Il est %d:%d", h.h, h.hm );
    }
    


    Ne pas oublier cependant que lors du passage en paramètre le C fait toujours une copie.

    Pour l'utilisation:
    heure monHeure = { 21, 28 };
    
    afficherHeure( monHeure );
    


    M.
    1. slt,
      tu peux déclarer une variable de type "la structure que tu veux passer en param dans une fonction" et tu fais passer

      cette variable en param de la fonction

      eske c claire??????????
      1. Merci beaucoup. cependant j'ai une autre question. la foncton affiche date, je dois la conditionner comme la faonction affiche heure?

        le h.h c un pointeur ?
        1. Re bonjour,

          typedef struct
          {
             int h;
             int hm;
          } heure; 
          
          heure monHeure;
          
          monHeure.h = 2;
          monHeure.hm = 34;
          


          h est un int.
          hm est un int
          monHeure est un heure

          Pour que h.h soit un pointeur il faudrait la déclaration suivante:
          typedef struct
          {
             int *h;
             int hm;
          } heure; 
          


          Pour ce qui est de l'affichage d'une date je ferais une fonction similaire.
          void afficherDate( date uneDate );
          ou
          void afficherDate( date *pUneDate );
          Si toutefois tu souhaites un passage du paramètre par pointeur.

          Il y a un petit blême dans le code initial dans
          //Debug de affiche jour
          jour debug;
          printf("Entrez un jour au format: NumeroDuJour NomDuJour\n");
          scanf("%d %c",&debug);
          affichejour(debug); 
          

          On ne peut utiliser le scanf de cette manière, il faut obligatoirement préciser des paramètres distinct pour récupérer chaque valeur. Comme suit:
          scanf( "%d %c", &debug.j, &debug.jnom );
          


          M.
          1. salut je m'appelle lioyan
            je débute en programmation surtout en langage C. jai déjà fait d'autres langages tels que pascal...
            Bref, jai téléchargé DEV-CPP mais de fois je n'arrive pas à compiller surtout apres avoir mis
            void main()
            { int ou float ...........;
            il refuse de compiler alors je ny comprends rien pourtant avec turbo Cpp le meme code passe tres bien.
            svp aidez moi
          2. @lioyanmonsieur Lionel fallait ouvrir une autre duscussion!!!!pour ta reponse, avec dev, tu ne peut pas typer la fonction main donc au debut ecris juste main(); cela est du au fait que dev utilise un compilateur c++ alors que toi tu fais un prg c.
            essaye seulement avec main(); tu veras...