A voir également:
- Erreur dans fonction
- Erreur 0x80070643 - Accueil - Windows
- Fonction si et - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur 5000 france tv - Forum iPhone
3 réponses
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
30 janv. 2010 à 16:13
30 janv. 2010 à 16:13
Salut,
Si tu veux utlisé ta structure dans ta fonction, il faut que ta fonction "connaisse" la structure..
Or la portée de ta structure est la fonction main()...
Il faudrait la declarer avant ta foncton
struct data{
float montant;
char nom;
char prenom;
} donneur;
void fonction_don(struct data donneur);
main(void)
.....
D'autre part, dans ta structure Nom et Prenom sont des char alors que, d'apres ce que je comprends, cela devrait être des tableaux de char....
struct data{
float montant;
char nom[30];
char prenom[30];
} donneur;
j'espere ca pourra t'aider!!
@+
Si tu veux utlisé ta structure dans ta fonction, il faut que ta fonction "connaisse" la structure..
Or la portée de ta structure est la fonction main()...
Il faudrait la declarer avant ta foncton
struct data{
float montant;
char nom;
char prenom;
} donneur;
void fonction_don(struct data donneur);
main(void)
.....
D'autre part, dans ta structure Nom et Prenom sont des char alors que, d'apres ce que je comprends, cela devrait être des tableaux de char....
struct data{
float montant;
char nom[30];
char prenom[30];
} donneur;
j'espere ca pourra t'aider!!
@+
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
30 janv. 2010 à 16:14
30 janv. 2010 à 16:14
Bonjour,
Tu as déclaré ta structure data à l'intérieur de ta fonction main, et tu l'utilises à l'extérieur. D'où le message. Sors plutôt la déclaration de data et mets-la après les #define. Et tout devrait rentrer dans l'ordre.
Par contre, tu as d'autres problèmes : nom et prenom sont de type char, et tu les utilises comme des chaînes de caractères. Pour définir des chaînes de caractères, il faut les déclarer comme : char nom[31] et char prenom[31] par exemple.
scanf("%30s %30s", &donneur.nom, &donneur.prenom);
Si donneur.nom et donneur.prenom sont de type tableau de char, il faudra enlever l'esperluette (&) devant donneur.nom ainsi que donneur.prenom
main(void)
Le prototype de main sans argument est : int main (void); (ne pas oublier l'int).
Et enfin, je te conseille de plutôt utiliser des double que des float. Sauf cas très particulier, tu peux oublier les float.
Cdlt,
Tu as déclaré ta structure data à l'intérieur de ta fonction main, et tu l'utilises à l'extérieur. D'où le message. Sors plutôt la déclaration de data et mets-la après les #define. Et tout devrait rentrer dans l'ordre.
Par contre, tu as d'autres problèmes : nom et prenom sont de type char, et tu les utilises comme des chaînes de caractères. Pour définir des chaînes de caractères, il faut les déclarer comme : char nom[31] et char prenom[31] par exemple.
scanf("%30s %30s", &donneur.nom, &donneur.prenom);
Si donneur.nom et donneur.prenom sont de type tableau de char, il faudra enlever l'esperluette (&) devant donneur.nom ainsi que donneur.prenom
main(void)
Le prototype de main sans argument est : int main (void); (ne pas oublier l'int).
Et enfin, je te conseille de plutôt utiliser des double que des float. Sauf cas très particulier, tu peux oublier les float.
Cdlt,
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
anthony
30 janv. 2010 à 16:45
30 janv. 2010 à 16:45
Elle ne sera pas globale, elle aura pour portée le fichier. Et c'est ce qu'il faut puisque tu l'utilises dans les déclarations d'autres fonctions du fichier.
anthony
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
30 janv. 2010 à 16:48
30 janv. 2010 à 16:48
ah ok, mais imaginons que je veux la mettre dans la fonction main dans ce cas je pourrais plus la passer a la fonction ??
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
>
anthony
30 janv. 2010 à 17:11
30 janv. 2010 à 17:11
Si ta structure n'est utilisée que dans ta fonction, oui tu peux laisser la définition du type dedans.
anthony
>
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
30 janv. 2010 à 18:09
30 janv. 2010 à 18:09
ah ok donc ici comme je l'utilise dans on fonction main et dans la fonction_don je doit mettre la structure globale, et si j'aurais pas mit
dans la fonction main j'aurais pu mettre la structure dans la fonction main en gros c'est ca ?
puts("Entrez le nom est prénom du donnateur :"); scanf("%30s %30s", donneur.nom, donneur.prenom); printf("Entrez le montant du don:"); scanf("%f", &donneur.montant);
dans la fonction main j'aurais pu mettre la structure dans la fonction main en gros c'est ca ?
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
30 janv. 2010 à 16:37
30 janv. 2010 à 16:37
Salut,
ben dans ce cas oui....
@+
ben dans ce cas oui....
@+
30 janv. 2010 à 16:17
Par contre c'est plutôt char nom[31] qu'il faut utiliser dans son cas.
Cdlt,
30 janv. 2010 à 16:20
Et pour le &, ta remarque est nécessaire!!;)
@+