Les structures en c

mal0506 Messages postés 7 Date d'inscription mercredi 9 juin 2010 Statut Membre Dernière intervention 28 février 2012 - 17 févr. 2012 à 16:16
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Derniè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;
}

2 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
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...
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
18 févr. 2012 à 11:03
Bonjour,

Pour une question C, merci de poster sur cppfrance dans un thème C.

[ Déplacé sur cppfrance ]
0
Rejoignez-nous