Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1935 connectés 

  FORUM HardWare.fr
  Programmation
  C

  affichage d'une structure

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

affichage d'une structure

n°2217562
kochfet
Posté le 26-01-2014 à 11:45:39  profilanswer
 

Bonjour  
 
Je suis en train de coder un programme en C avec Dev-C++. Ce programme utilise la notion de la structure. J'ai des problèmes à l'exécution de mon code. Je vais vous présenter un petit exemple pour vous pouvez m'aider et merci d'avance.

Code :
  1. #include <stdio.h>
  2.        struct voiture
  3.        {
  4.          char matricule[10];
  5.          };
  6.        
  7.               void saisie_voiture(struct voiture v)
  8.               {
  9.                   //struct voiture v;  
  10.                    printf("\n donner la matricule de la voiture :" );
  11.                    scanf( "\n %s",&v.matricule);
  12.                }
  13.                void affich(struct voiture v)
  14.                {
  15.                     printf("les caractéristique de la voiture sont :\n" );
  16.                     printf("matricule : %s \n",v.matricule);                   
  17.                 }
  18. int main()
  19. {
  20.     struct voiture v;
  21.     saisie_voiture(v);
  22.     affich(v);
  23.     system("pause" );
  24.     return 0;
  25. }


 
A l'exécution il m'a demandé de saisir la matricule. je lui donner cette matricule mais il ne m'affiche pas ce que j'ai saisi il m'affiche un caractère différent (point d’interrogation inversé);

mood
Publicité
Posté le 26-01-2014 à 11:45:39  profilanswer
 

n°2217564
dreameddea​th
Posté le 26-01-2014 à 12:12:48  profilanswer
 

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 :
  1. #include <stdio.h>
  2.        struct voiture
  3.        {
  4.          char matricule[10];
  5.          };
  6.      
  7.               void saisie_voiture(struct voiture *v)
  8.               {
  9.                   //struct voiture v;   
  10.                    printf("\n donner la matricule de la voiture :" );
  11.                    scanf( "\n %s",&v.matricule);
  12.                }
  13.                void affich(struct voiture *v)
  14.                {
  15.                     printf("les caractéristique de la voiture sont :\n" );
  16.                     printf("matricule : %s \n",v.matricule);                 
  17.                 }
  18. int main()
  19. {
  20.     struct voiture v;
  21.     saisie_voiture(&v);
  22.     affich(&v);
  23.     system("pause" );
  24.     return 0;
  25. }


 
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
n°2217567
kochfet
Posté le 26-01-2014 à 12:23:10  profilanswer
 

Merci pour votre réponse :).
Pour réussir l'exécution de ce problème, on remplace le point par -> dans les deux fonctions.

 

une autre question svp : y'a t'il une autre manière pour résoudre ce problème sans utilisation de la notion du pointeur.


Message édité par kochfet le 26-01-2014 à 12:26:11
n°2217568
dreameddea​th
Posté le 26-01-2014 à 12:32:04  profilanswer
 

Quel "problème" : c'est la bonne manière de faire. En C (car c'est comme ça que fonctionne un processeur et sa mémoire après tout), la notion de pointeur est centrale...
 
Sinon en relisant le code, il y 2 erreurs, en fait il fallait replacer les v.matricule par v->matricule.
 
 
En C++  il y a la notion de référence

Code :
  1. #include <stdio.h>
  2.        struct voiture
  3.        {
  4.          char matricule[10];
  5.          };
  6.    
  7.               void saisie_voiture(struct voiture &v)
  8.               {
  9.                   //struct voiture v;   
  10.                    printf("\n donner la matricule de la voiture :" );
  11.                    scanf( "\n %s",&(v.matricule));
  12.                }
  13.                void affich(struct voiture &v)
  14.                {
  15.                     printf("les caractéristique de la voiture sont :\n" );
  16.                     printf("matricule : %s \n",v.matricule);               
  17.                 }
  18. int main()
  19. {
  20.     struct voiture v;
  21.     saisie_voiture(v);
  22.     affich(v);
  23.     system("pause" );
  24.     return 0;
  25. }


 
Il est vrai qu'en C++  c'est plus lisible...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  affichage d'une structure

 

Sujets relatifs
Petit un problème avec structureformat d'affichage d'un input {(+/-) ##.##}
Affichage fichier dans répertoireAffichage WHILE
Structure Polynome( probleme d'affichage) en Cchanger la résolution d'affichage
problème affichage sur afficheur lcdProblème affichage widget Twitter sur site web mobile
Probléme de tri et affichage d'élément dans une structure[ASP+SQL SERVER] Affichage de la structure d'une BDD (Résolu)
Plus de sujets relatifs à : affichage d'une structure


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR