Besoin d'explication sur les structures en c

LoVerMaKi Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
mansas87 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -
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!!!!!

4 réponses

Mahmah Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   125
 
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.
0
sassouki2 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
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??????????
0
LoVerMaKi
 
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 ?
0
Mahmah Messages postés 496 Date d'inscription   Statut Membre Dernière intervention   125
 
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.
0
lioyan
 
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
0
mansas87 Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   > lioyan
 
monsieur 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...
0