[c]afficher une structure en c

Fermé
informaticienne - 31 déc. 2008 à 01:26
sadektlili Messages postés 139 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 3 avril 2010 - 31 déc. 2008 à 07:05
Bonjour,
quelqu'un pourrait m'aider à corriger ma fonction affiche?
merci
voici mon programme:
#include <iostream>
#define nmax 30
typedef char chaine[nmax];
typedef enum{homme,femme}sexe;
typedef enum{libere,exempte,reforme,incorporable}sit_mit;
typedef union{sit_mit sitmit;
chaine nomjf;}complement;
typedef struct adresse{
unsigned int num;
chaine rue;
unsigned int code;
chaine localite;
}adresse;
typedef struct employe{
chaine nom;
chaine prenom;
sexe sex;
complement comp;
adresse ad;
}employe;

void saisie_structure( employe *emp){
int s,m;
emp=(employe*)malloc(sizeof(employe));
printf("taper le nom\n");
gets(emp->nom);
printf("taper le prenom\n");
gets(emp->prenom);
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
while ((s!=0)&&(s!=1)){
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
}
switch(s){
case 0:emp->sex=homme;
break;
case 1:emp->sex=femme;
}
if (emp->sex==femme){
printf("taper le nom de jeune fille\n");
gets(emp->comp.nomjf);
}
else
printf("taper la situation militaire:taper un pour libere,deux pour exempte,trois pour reforme et quatre pour incorporable\n");
scanf("%d",&m);
fflush(stdin);
switch(m){
case 0:emp->comp.sitmit=libere;
break;
case 1:emp->comp.sitmit=exempte;
break;
case 3:emp->comp.sitmit=reforme;
break;
case 4:emp->comp.sitmit=incorporable;
break;
}
printf("taper votre adresse\n");
printf("taper le numero de la rue\n");
scanf("%ud",&emp->ad.num);
fflush(stdin);
printf("taper le nom de la rue\n");
gets(emp->ad.rue);
printf("taper le code postale");
scanf("%ud",&emp->ad.code);
fflush(stdin);
printf("taper la localite\n");
gets(emp->ad.localite);
}
void affiche_structure(employe *emp){
int s,m;
printf("%s",emp->nom);
printf(emp->prenom);
switch(s){
case 0:printf("sexe:homme\n");
break;
case 1:printf("sexe:femme\n");
break;
}
if (emp->sex==femme)
printf("nom de jeune fille:",emp->comp.nomjf);
switch(m){
case 0:printf("libere\n");
break;
case 1:printf("exempte\n");
break;
case 3:printf("reforme\n");
break;
case 4:printf("incorporable\n");
break;
}
printf("adresse:\n");
printf("%ud",emp->ad.num);
printf(emp->ad.rue);
printf("%ud",emp->ad.code);
printf(emp->ad.localite);
}
int main(){
int n,i;
employe *tab[30];
printf("taper le nombre de personnes\n");
scanf("%d",&n);
fflush (stdin);
for(i=0;i<n;i++){
tab[i]=(employe*)malloc(sizeof(employe));
saisie_structure(tab[i]);
}
}

2 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
31 déc. 2008 à 02:07
Bonjour,

Si tu veux donner aux gens l'envie de t'aider:

1) Décris-nous ton erreur. C'est à l'execution? A la compilation? Quel est le message d'erreur?
2) Poste ton code entre les balises code.

:-)
0
Exact, d'autant plus que la question a été posée il y a environ 3 heures!
J'avais demandé l'indentation et offert quelques modifs que je ne retrouve pas.
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527 > loupius
31 déc. 2008 à 02:23
Bon, c'est un quasi doublon, je laisse parce qu'il ne semble plus tout à fait s'agir du même problème...
0
sadektlili Messages postés 139 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 3 avril 2010 4
31 déc. 2008 à 07:05
il ya des errer qui j'ai corriger mais il ya des chause qui logiquement fause


void affiche_structure(employe *emp){
int s,m;
printf("%s",emp->nom);
printf(emp->prenon); ------>printf("%s",emp->prenon);



switch(s){ ------------------------->tu fait une "switch" suivent le valeur de 's' mais le valeur de 's' inconu
case 0:printf("sexe:homme\n");
break;
case 1:printf("sexe:femme\n");
break;
}
if (emp->sex==femme)
printf("nom de jeune fille:",emp->comp.nomjf); ----->printf("nom de jeune fille:%s",emp->comp.nomjf);
switch(m){-------------------------------------->le meme chause pour le variabler 's'
case 0:printf("libere\n");
break;
case 1:printf("exempte\n");
break;
case 3:printf("reforme\n");
break;
case 4:printf("incorporable\n");
break;
}
printf("adresse:\n");
printf("%ud",emp->ad.num);
printf(emp->ad.rue);
printf("%ud",emp->ad.code);
printf(emp->ad.localite);
}
0