L'erreur vient du passage de la structure par valeur (copie) et non par "références" et en C le seul moyen c'est le pointeur.
Donc saisie_voiture modifie la valeur "locale" v et non la variable v de la fonction main.
Code :
- #include <stdio.h>
- struct voiture
- {
- char matricule[10];
- };
-
- void saisie_voiture(struct voiture *v)
- {
- //struct voiture v;
- printf("\n donner la matricule de la voiture :" );
- scanf( "\n %s",&v.matricule);
- }
- void affich(struct voiture *v)
- {
- printf("les caractéristique de la voiture sont :\n" );
- printf("matricule : %s \n",v.matricule);
- }
- int main()
- {
- struct voiture v;
- saisie_voiture(&v);
- affich(&v);
- system("pause" );
- return 0;
- }
|
Le "*" déclare que la fonction attend un pointeur sur une "struct voiture" et le "&" permet de récupérer l'adresse du "v" de la fonction main...
Et comme dit un peu partout dans le forum, attention au scanf, c'est source de plein de pbs (préférer le couple fgets/sscanf)
Message édité par dreameddeath le 26-01-2014 à 12:16:03