bonsoir , voila ma problème j'ai ecrit un exercice en C pourtant j'utilise le compilateur de microsot visual c++ (car je me suis familiarisé avec lui)
le programme marche correctemant sauf lors de la saisie d'un caractère , il dépasse l'instruction de la saisie
j'ai fait un commantaire dans le code vers la problème
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
#include <stdio.h>
 
 
#define LG_NOM 30
char *c;
 
struct date{
	int jour;
	int mois;
	int annee;
};
 
struct personne{
	char nom[LG_NOM+1];
	date date_embauche;
	date date_poste;
};
 
void saisie(struct personne &nouveau )
{
 
 
	printf("donner le nom= ");
	scanf("%s", nouveau.nom);
	printf("donner la date de l'embauche=");
	scanf("%d %d %d", &nouveau.date_embauche.jour ,&nouveau.date_embauche.mois, &nouveau.date_embauche.annee );
	printf("Date poste=Date embauche?(O|N) :");
	// ma problème est ici lors de la saisie de le caractère c !!
	scanf("%c", c); // le compilateur ignore cette instruction et passe a la prochaine
 
 
 
 
		if ((*c=='O') || (*c=='o'))
		{
			printf("date poste(jj mm aa):");
			scanf("%d %d %d",&nouveau.date_poste.jour ,&nouveau.date_poste.mois ,&nouveau.date_poste.annee);
		}
}
 
void affiche(struct personne &nouveau)
{
	printf("-------------------------\n");
	printf("Nom : %s\n",nouveau.nom);
	printf("Date embauche(jj mm aa): %d %d %d\n",nouveau.date_embauche.jour ,nouveau.date_embauche.mois, nouveau.date_embauche.annee);
	if (*c!='1' ) printf("Date poste(jj mm aa) : %d %d %d\n", nouveau.date_poste.jour ,nouveau.date_poste.mois, nouveau.date_poste.annee);
	printf("------------------\n");
 
}
 
void main()
{
	struct personne nouveau;
 
	saisie(nouveau);
	affiche(nouveau);
}