Un pb sur les structures personnalisées

Résolu/Fermé
M@teo - 6 avril 2012 à 20:46
 M@teo - 7 avril 2012 à 10:22
Bonjour à tous,
J'ai commencé à faire des programmes en C il n'y a pas longtemps et j'en suis à la création de structures personnalisées, et j'ai essayé de faire un petit programme, mais il y a plein d'erreurs que je ne comprends pas. voici mon programme:
9. #include <stdio.h>
10. #include <stdlib.h>
11. #include <string.h>
12.
13.
14. typedef struct Personne Personne;
15. struct Personne
16. {
17. char prenom[100];
18. char nom[100];
19. int age;
20. char ville[100];
21. char adresse[100];
22. };
23.
24.
25. void Infos_joueur(Personne joueur[])
26. {
27. printf("Votre nom: ");
28. scanf("%s", joueur.prenom);
29. printf("%s comment? %s ", joueur.prenom, joueur.prenom);
30. scanf("%s", joueur.nom);
31. print("Quel est votre age %s %s? ", joueur.prenom, joueur.nom);
32. scanf("%d", joueur.age);
33. printf("Vous habitez a: ");
34. scanf("%s", joueur.ville);
35. prnitf("Votre adresse est: ");
36. scanf("%s", joueur.adresse);
37.
38. }
39.
40.
41. int main(int argc, char *argv[])
42. {
43.
44. Personne joueur[100]={"", "", "", "", 0};
45. int nombre_de_joueurs=0;
46. do
47. {
48. printf("Combien y a-t-il de joueurs (100 max, 1 min)? ");
49. scanf("%d", &nombre_de_joueurs);
50. }while (nombre_de_joueurs<1||nombre_de_joueurs>100);
51.
52.
53. int i=0;
54. while (i=0, i<nombre_de_joueurs, i++)
55. {
56. Infos_joueur(joueur[i]);
57. printf("Fiche d'identite\n=================\nNom: %s\nPrenom: %s\nAge: %d\nVille: %s\nAdresse: %s\n\n");
58. }
59.
60. return 0;
61. }
Et les (nombreuses) erreurs sont:
In function 'Infos_joueur':|
|28|error: request for member 'prenom' in something not a structure or union|
error: request for member 'prenom' in something not a structure or union|
|29|error: request for member 'prenom' in something not a structure or union|
|30|error: request for member 'nom' in something not a structure or union|
|31|warning: implicit declaration of function 'print'|
|31|error: request for member 'prenom' in something not a structure or union|
|31|error: request for member 'nom' in something not a structure or union|
|32|error: request for member 'age' in something not a structure or union|
|34|error: request for member 'ville' in something not a structure or union|
|35|warning: implicit declaration of function 'prnitf'|
|36|error: request for member 'adresse' in something not a structure or union|
||In function 'main':|
|44|warning: missing braces around initializer|
|44|warning: (near initialization for 'joueur[0]')|
|44|warning: initialization makes integer from pointer without a cast|
|54|warning: value computed is not used|
|56|error: incompatible type for argument 1 of 'Infos_joueur'|
|25|note: expected 'struct Personne *' but argument is of type 'Personne'|
|57|warning: too few arguments for format|
||=== Build finished: 10 errors, 7 warnings ===|
Quelq'un aurait-il une solution s'il vous plaît? Merci d'avance.ig>

1 réponse

Bonsoir,

Alors, je te propose une solution qui fonctionne mais qui n'est pas obligatoirement bien codée. En tout cas, si je devais le faire, je ferai comme ça.

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

typedef struct Personne Personne; 
struct Personne { 
 char prenom[100]; 
 char nom[100]; 
 int age; 
 char ville[100]; 
 char adresse[100]; 
}; 

Personne Infos_joueur() { 
 Personne j_temp; 
 printf("Votre nom: "); 
 scanf("%s", j_temp.prenom); 
 printf("%s comment? %s ", j_temp.prenom, j_temp.prenom); 
 scanf("%s", j_temp.nom); 
 printf("Quel est votre age %s %s? ", j_temp.prenom, j_temp.nom); 
 scanf("%d", &j_temp.age); 
 printf("Vous habitez a: "); 
 scanf("%s", j_temp.ville); 
 printf("Votre adresse est: "); 
 scanf("%s", j_temp.adresse); 
 return j_temp; 
} 

void affiche(Personne joueur) { 
 printf("Fiche d'identite\n=================\nNom: %s\nPrenom: %s\nAge: %d\nVille: %s\nAdresse: %s\n\n",joueur.nom,joueur.prenom,joueur.age,joueur.ville,joueur.adresse); 
} 

int main(int argc, char *argv[]) { 
 Personne joueur[100]; 
 int nombre_de_joueurs=0; 
 int i=0; 
   
 do { 
  printf("Combien y a-t-il de joueurs (100 max, 1 min)? "); 
  scanf("%d", &nombre_de_joueurs); 
 } while (nombre_de_joueurs<1 || nombre_de_joueurs>100); 

 for (i=0; i<nombre_de_joueurs; i++) { 
  joueur[i] = Infos_joueur(); 
 } 
  
 // Affichage des joueurs 
 for (i=0; i<nombre_de_joueurs; i++) { 
  affiche(joueur[i]); 
 } 

 return 0; 
} 


Attention à tes "printf", parce que tu avais écrit : "prnitf" et "print"
Et ce n'est pas un "while", mais un "for" avec ";" comme séparateur.
1
Merci pour cette correction!
0