mal0506
Messages postés7Date d'inscriptionmercredi 9 juin 2010StatutMembreDernière intervention28 février 2012
-
17 févr. 2012 à 16:16
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
18 févr. 2012 à 11:03
Salut à tous,
Je veux écrire un sous-programme entree()permettant d'entrer un temps (heure:minute:seconde) dans une variable de type struct temps et un sous-programme sortie()permettant de sortir à l'écran un temps stocké dans une variable de type struct temps.
J'ai écrit les deux sous-programmes entre() et sortie() de type struct temps. le programme principal fait appel aux deux sous-programmes. Le test ne donne pas le résultat attendu c'est à dire l'affichage du temps saisi dans entree(). Comment faire? Aidez-moi.Je suis débutant en C.Portez votre correction mon code pour qu'il affiche le temps que l'utilisateur saisi au clavier.
#include <stdio.h>
#include <stdlib.h>
struct temps
{
int heure;
int minute;
int seconde;
};
void entree(struct temps a)
{
a.heure=0; a.minute=0; a.seconde=0;
do
{
printf("Entrez un temps:\n");
scanf("%d:%d:%d", &a.heure, &a.minute, &a.seconde);
if ((a.heure>24)||(a.minute>60)||(a.seconde>60))
printf("Temps invalide...Veuillez recommencer...\n");
else
printf("\n");
}
while ((a.heure>24)||(a.minute>60)||(a.seconde>60));
}
void sortie(struct temps *b)
{
printf("Affichage du temps saisie:\n");
printf("%d:%d:%d", b->heure, b->minute, b->seconde);
}
int main()
{
struct temps a;
struct temps *b;
entree(a);
b = &a;
sortie(b);
printf("\nMerci!");
return 0;
}
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 17 févr. 2012 à 18:32
Salut,
Tout d'abord, on dit plutôt "fonction" au lieux de "sous-prorgamme". Sinon pour ton problème, c'est juste une histoire de portée des variables : dans ta fonction entree tu fait une copie de la structure, cetet copie est donc locale à la fonction. Du coup, vu que tu passes à sortie l'adresse de la structure déclarée dans le main, cette structure n'ayant pas été initialisée tu te retrouves avec un peu n'importe quoi. Bref, pour corriger ton problème, tu devrais passer à entree un pointeur vers la structure et non pas une copie.
PS : ton sujet est dans le mauvais forum tu sais...