Un pb sur les structures personnalisées

Résolu
M@teo -  
 M@teo -
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

Utilisateur anonyme
 
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
M@teo
 
Merci pour cette correction!
0