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. 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...
  2. 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. 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. 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.