Passage d'un parametre problematique
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:
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