[Langage C]
Résolu
jamsss
-
tatou_38 Messages postés 1937 Date d'inscription Statut Membre Dernière intervention -
tatou_38 Messages postés 1937 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutant en C et j'ai un petit soucis quand j'essaye de compiler ceci:
#include <stdio.h>
struct temps
{
int heure;
int minute;
int seconde;
};
main()
{
struct temps t;
entree(t.heure,t.minute,t.seconde);
sortie(t.heure,t.minute,t.seconde);
}
entree(t.heure,t.minute,t.seconde)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
while (t.heure<0 || t.heure>23 || t.minute<0 || t.minute>59 || .seconde<0 || t.seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
}
}
sortie(t.heure,t.minute,t.seconde)
{
printf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
}
j'ai les erreurs suivantes avec gcc:
D6.2.c:16: erreur: expected ‘)’ before ‘.’ token
D6.2.c:27: erreur: expected ‘)’ before ‘.’ token
J'ai essayé plein de solutions mais la je comprends plus rien ;(
Merci d'avance de votre aide
Je suis débutant en C et j'ai un petit soucis quand j'essaye de compiler ceci:
#include <stdio.h>
struct temps
{
int heure;
int minute;
int seconde;
};
main()
{
struct temps t;
entree(t.heure,t.minute,t.seconde);
sortie(t.heure,t.minute,t.seconde);
}
entree(t.heure,t.minute,t.seconde)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
while (t.heure<0 || t.heure>23 || t.minute<0 || t.minute>59 || .seconde<0 || t.seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
}
}
sortie(t.heure,t.minute,t.seconde)
{
printf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
}
j'ai les erreurs suivantes avec gcc:
D6.2.c:16: erreur: expected ‘)’ before ‘.’ token
D6.2.c:27: erreur: expected ‘)’ before ‘.’ token
J'ai essayé plein de solutions mais la je comprends plus rien ;(
Merci d'avance de votre aide
A voir également:
- [Langage C]
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
8 réponses
Bonjour,
as tu pensé à caster tes prototypes de fonction :
void sortie(t.heure,t.minute,t.seconde)
{
printf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
}
?
as tu pensé à caster tes prototypes de fonction :
void sortie(t.heure,t.minute,t.seconde)
{
printf("%i h %i mn %i sec",t.heure,t.minute,t.seconde);
}
?
En fait c'est ton passage de paramètres dans tes prototypes qui n'est pas correcte. Tu utilises des éléments de structure comme définition de paramètres et là gcc yen a pas vouloir comprendre ce que sait.
Essaye ceci :
entree(heure,minute,seconde)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",heure,minute,seconde);
while (heure<0 || heure>23 || minute<0 || minute>59 || seconde<0 || seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",heure,minute,seconde);
}
}
Essaye ceci :
entree(heure,minute,seconde)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",heure,minute,seconde);
while (heure<0 || heure>23 || minute<0 || minute>59 || seconde<0 || seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",heure,minute,seconde);
}
}
entree(t.heure,t.minute,t.seconde) ==> il faut passer tes paramètres par adresse et non par valeur et en passant la structure et non ses membres (le jour où tu auras des structures avec 100 membres tu aprécieras !) . En tous ta syntaxe est incorrecte.
Déclaration de ta structure :
struct {
int heure;
int minute;
int seconde;
} tTemps;
int entree( tTemps *T) {
T->heure = 12;
T->minute = 45;
T->seconde = 36
}
Tu déclare un objet de type tTemps :
tTemps MonTemps;
et tu appèle la fonction par :
rc = entree( &MonTemps )
printf( "MonTemps est : %02d:%02d:%02d\n" , MonTemps.heure , MonTemps.minute , MonTemps.seconde );
Voilà !
PS : je crains que tu doives ignorer les autres réponses qui ont l'air fantaisistes !
Déclaration de ta structure :
struct {
int heure;
int minute;
int seconde;
} tTemps;
int entree( tTemps *T) {
T->heure = 12;
T->minute = 45;
T->seconde = 36
}
Tu déclare un objet de type tTemps :
tTemps MonTemps;
et tu appèle la fonction par :
rc = entree( &MonTemps )
printf( "MonTemps est : %02d:%02d:%02d\n" , MonTemps.heure , MonTemps.minute , MonTemps.seconde );
Voilà !
PS : je crains que tu doives ignorer les autres réponses qui ont l'air fantaisistes !
Il vaut mieux présenter une ferrari en état de marche qu'une deudeuche pourrave.
Je pense que pour l'internaute qui veux apprendre, autant qu'il voie les bonnes techniques plutôt que de lui faire corriger une structure de programme qui ne tient pas la route.
Enseigner c'est tirer les élèves vers le haut !
Je pense que pour l'internaute qui veux apprendre, autant qu'il voie les bonnes techniques plutôt que de lui faire corriger une structure de programme qui ne tient pas la route.
Enseigner c'est tirer les élèves vers le haut !
Shaboo, ça ne marche pas ta solution, si je fais ce que tu dis les variables heure, minute et seconde ne sont pas déclarés dans mes fonctions entree() et sortie()
Merci tatoo_38 ça fonctionne j'ai fait ça:
#include <stdio.h>
struct temps
{
int heure;
int minute;
int seconde;
};
main()
{
struct temps t;
entree(&t);
sortie(&t);
}
entree(struct temps *t)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",&(t->heure),&(t->minute),&(t->seconde));
while (t->heure<0 || t->heure>23 || t->minute<0 || t->minute>59 || t->seconde<0 || t->seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",t->heure,t->minute,t->seconde);
}
}
sortie(struct temps *t)
{
printf("%i h %i mn %i sec",t->heure,t->minute,t->seconde);
}
Par contre maintenant j'ai une erreur de segmentation, si je rentre 2 temps invalides à la suite, le premier c'est bon , le deuxième non...
Merci tatoo_38 ça fonctionne j'ai fait ça:
#include <stdio.h>
struct temps
{
int heure;
int minute;
int seconde;
};
main()
{
struct temps t;
entree(&t);
sortie(&t);
}
entree(struct temps *t)
{
printf("Entrez un temps : ");
scanf("%i h %i mn %i sec",&(t->heure),&(t->minute),&(t->seconde));
while (t->heure<0 || t->heure>23 || t->minute<0 || t->minute>59 || t->seconde<0 || t->seconde>59)
{
printf("Temps invalide...Veuillez recommencer...");
scanf("%i h %i mn %i sec",t->heure,t->minute,t->seconde);
}
}
sortie(struct temps *t)
{
printf("%i h %i mn %i sec",t->heure,t->minute,t->seconde);
}
Par contre maintenant j'ai une erreur de segmentation, si je rentre 2 temps invalides à la suite, le premier c'est bon , le deuxième non...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dans ce cas, regarde bien la différence entre ton premier scanf et le second, qui est dans la boucle... ^^