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

  FORUM HardWare.fr
  Programmation
  C

  [C]Chaine qui ne s'affiche pas...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C]Chaine qui ne s'affiche pas...

n°2212072
kferfred
Posté le 28-11-2013 à 20:37:21  profilanswer
 

Bonjour, j'ai un petit problème, je dois afficher le champ d'une structure que j'ai créé qui est une chaine de caractère  :pt1cable:  
 
Donc voici mon code :
 

Code :
  1. FILE* ptMem;
  2.     smartphone stockage;
  3.     int i=1;
  4.     ptMem=fopen(nomFich,"rb" );
  5.     if(ptMem==NULL){
  6.         printf("Erreur dans l'ouverture du fichier. Le programme va se fermer." );
  7.         exit(-1);
  8.     }
  9.     else{
  10.         do{
  11.             fread(&stockage, sizeof(smartphone), 1, ptMem);
  12.             printf("\n\tsmartphone numero %d :\n",i);
  13.             printf("Nom du modele : %s \n",stockage.nom);
  14.             printf("Portable de marque : " );
  15.             switch(stockage.numFabricant){
  16.                 case 1: printf("Samsung\n" );
  17.                     break;
  18.                 case 2: printf("LG\n" );
  19.                     break;
  20.                 case 3: printf("Apple\n" );
  21.                     break;
  22.                 case 4: printf("Nokia\n" );
  23.                     break;
  24.                 case 5: printf("Blackberry\n" );
  25.                     break;
  26.                 default: printf("####\n" );
  27.             }
  28.             printf("Poids de %d grammes\n",stockage.poids);
  29.             printf("Prix de %d Euros.\n",stockage.prix);
  30.             i++;
  31.             system("pause" );
  32.         }while(feof(ptMem));
  33.     }
  34.     fclose(ptMem);


 
Quand je lance mon programme, la marque du modèle s'affiche, le poids et le prix aussi mais impossible d'afficher ce que j'ai mis dans le champ nom (ma chaine de caractère)
Et voici la structure :
 

Code :
  1. typedef struct{
  2.     char* nom;
  3.     int numFabricant;
  4.     int poids;
  5.     int prix;
  6. }smartphone;


 
Voila je sais pplus trop d'ou ça peut venir... merci de votre aide :)

mood
Publicité
Posté le 28-11-2013 à 20:37:21  profilanswer
 

n°2212086
kferfred
Posté le 28-11-2013 à 22:45:23  profilanswer
 

un petit up parceque je bloque vraiment j'arrive pas afficher cette satané chaine de caractères ! merci ;)

n°2212089
Farian
Posté le 28-11-2013 à 23:25:16  profilanswer
 

Bonjour !
 
Quand vous avez effectué la sauvegarde dans votre fichier, vous avez sauvegardé dans "nom" un pointeur, c'est-à-dire une adresse mémoire valide au moment de la sauvegarde.
 
Quand vous relisez la structure à partir du fichier, vous récupérez la valeur du pointeur qui a été sauvegardée, mais rien ne dit (et il y a à peu près aucune chance que cela soit le cas ...) que cette adresse soit toujours valide.
 
Vous devez donc sauvegarder la chaine, par exemple en modifiant la structure pour avoir un truc du genre "char nom[80];" (en prenant large et à vous de gérer ensuite la taille de cette chaîne dans les fonctions qui en modifient le contenu).
 
Bonne continuation !

n°2212090
kferfred
Posté le 28-11-2013 à 23:27:02  profilanswer
 

Merci, j'avais complètement oublié cette subtilité :) effectivement si je n'impose pas une taille maximale a mon tableau de caractères cela risque de beaucoup moins bien marcher !


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

  [C]Chaine qui ne s'affiche pas...

 

Sujets relatifs
télécharger et installer C++C++ et procédure stockées MySql
Novice en langage C ! HELP![C] Tirage de lettre et probabilité
[C] Calculer la Normale d'un vecteur en C[C#]grand débutant restriction
Reload automatique toute les 10sec - C#C sous unix => synchronisation avec les signaux
envoyer tout un vecteur comme un paramètre de Java en C + +Aide Programmation en C
Plus de sujets relatifs à : [C]Chaine qui ne s'affiche pas...


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