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).


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;
}
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 ? ...)

Guillaume

ps : Je n'ai pas fait apparaitre certaines fonctions, en mettant simplement leurs définitions