Bonsoir,
J'ai un probleme dans le (mon) code suivant avec la fonction
void affiche_caracteristiques(char *name,int *code) qui prends en paramètre dans le main deux champs (name et codePostal) de la structure user1 (de type personne).
Je veux afficher à l'écran name et codePostal. Ce qui ne fonctionne pas du tout pour name. Avez-vous une idée d'où ça peut bloquer ? (définition de la structure ? parametre d'afficher_caractéristiques ? dans le printf ? ...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 struct personne { char *name; int codePostal; }; int SaisieCode(void); // demande de saisir un code postal int format_alphabetique(char *nom); // utilisée par la fonction SaisieNom ci-dessous char * SaisieNom (void) //demande de saisir un nom { char Nom[41]; do { printf("Entrez le nom\n"); fgets(Nom, sizeof Nom, stdin); // Lire Nom au clavier if(!(format_alphabetique(Nom))) // Emettre un message d'erreur ? { printf("Merci d'utiliser des lettres Majuscules ou minuscules\n"); } } while (!(format_alphabetique(Nom))); // Tant que le Nom n'est pas de format alphabetique return Nom; } void affiche_caracteristiques(char *name,int *code) // NE FONCTIONNE PAS { printf("Le nom est: %c\n",name); // cette ligne ne fonctionne pas : 8 est affiché quelque soit la chaine que je veux passer en parametre printf("Votre code postal est le :%i",*code); // Cette ligne fonctionne correctement et affiche bien la valeur du code postal } int main() { char fin=0; char choix; struct personne user1; // Création d'un objet personne de nom user1 user1.name = "NON SAISI"; // Initialisation des données de la personne user1 user1.codePostal = -1; // conformément au cahier des charges // AFFICHAGE DU MENU : while(!fin) // Tant que fin est faux, le programme boucle sur le menu principal : { printf("\n\n"); printf("1.Saisie du nom\n2.Saisie du code postal\n3.Affichage des caracteristiques de la personne\n4.Fin \n"); choix = getchar(); fflush(stdin); switch (choix) // Aiguillage en fonction du choix { case '1' : user1.name = SaisieNom(); // Appel pour saisir le premier champs (le nom) printf("La 3eme lettre de ton nom est: %c\n",user1.name[2]); // Debug break; case '2' : user1.codePostal = SaisieCode(); // Appel pour saisir le code postal break; case '3' : affiche_caracteristiques(&user1.name,&user1.codePostal); // Je passe en parametre les adresses des champs de ma srtucture user1 à la fonction d'affichage break; default: fin=1; // Si on choisit 4 on met fin à 1 (true) ce qui provoque la sortie de la boucle while et le retour du programme break; } } return 0; }
Guillaume
ps : Je n'ai pas fait apparaitre certaines fonctions, en mettant simplement leurs définitions
Partager