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

  FORUM HardWare.fr
  Programmation
  C++

  Aide ecriture fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide ecriture fichier

n°407201
touxe
Posté le 25-05-2003 à 19:18:13  profilanswer
 

Je cherche a sauvegarder dans un fichier un arbre AVL dans un fichier.
Chaque noeud a la structure suivante :  
 

Code :
  1. typedef struct infoVol * ptr_infoVol;
  2. typedef struct infoVol
  3. {
  4. char numero[20];
  5. char distance;
  6. ptr_listePassager jour[31];
  7. } infoVol;


 
 
Pour sauvegarder cet arbre, g pris l'alogo du parcours en largeur d'un arbre et au lieu d'afficher a l'ecran j'ecris le noued ds un fichiers :
 

Code :
  1. void sauvegardeArbre(ptr_arbreAVL a, FILE* fichier)
  2.   {
  3.   file f;
  4.   char chaine[1];
  5. ptr_arbreAVL tmp;
  6. tmp = (ptr_arbreAVL) malloc( sizeof(arbreAVL) );
  7. f.fin = NULL;
  8. f.debut = NULL;
  9. f.nb_elt = 0;
  10. enfile (&f, a);
  11. while (f.debut != NULL)
  12. {
  13.  defile(&f, &tmp);
  14.  printf("%d ",tmp->Vol.distance);
  15.  strncpy (chaine, &tmp->Vol.distance,1);
  16.  strncat (chaine, "\0", 2);
  17.  fputs (chaine, fichier);
  18.  fputs ("\n", fichier);
  19.  //fwrite ( &tmp->Vol.distance, sizeof(tmp->Vol.distance), 1, fichier);
  20.  if (tmp->sag != NULL)
  21.  {
  22.   enfile (&f, tmp->sag);
  23.  }
  24.  if (tmp->sad != NULL)
  25.  {
  26.   enfile (&f, tmp->sad);
  27.  }
  28. }
  29.   }


 
Seulement le fichier contient des caracteres bizar !!
 

Citation :

ÌÌÌ
ÌÌÌÀC
 ÌÌÌ0
 
 
ÌÌÌðC
ÌÌÌ
ÌÌÌ


 
je n'arrive pas a avoir ds le fichier une liste de mes noeuds, du type  

Citation :

5
6
4
12
3


 
Quelqu'n peut il m'aide
 
Merci

mood
Publicité
Posté le 25-05-2003 à 19:18:13  profilanswer
 

n°407205
Taz
bisounours-codeur
Posté le 25-05-2003 à 19:25:34  profilanswer
 

si tu arrives à avoir tes infos à l'écran, il te suffit de remplacer tes printf par des frpintf(fichier, ./..) et tes puts par des fputs

n°407206
Taz
bisounours-codeur
Posté le 25-05-2003 à 19:26:20  profilanswer
 

strncpy (chaine, &tmp->Vol.distance,1);
        strncat (chaine, "\0", 2);
 
c'est pas un peu enorme pour copier un simple char?

n°407212
touxe
Posté le 25-05-2003 à 19:32:33  profilanswer
 

c ca mon probleme j'arrive a afficher tt mes noeuds a l'ecran mais pas les inscrire ds le fichier

n°407213
Taz
bisounours-codeur
Posté le 25-05-2003 à 19:33:57  profilanswer
 

ben fwreite c'est les e/s binaires, fprintf/fputs les entrées sortie texte formatées

n°407235
touxe
Posté le 25-05-2003 à 20:01:37  profilanswer
 

g tout essayer et rien ne marche sauf si j'ecris fputs ("6", fichier);

n°407237
Taz
bisounours-codeur
Posté le 25-05-2003 à 20:14:53  profilanswer
 

si tu fais des frpintf et fputs et que le ficheir est illisible, c'est que le problème vient de tes données

n°407241
touxe
Posté le 25-05-2003 à 20:22:53  profilanswer
 

c ce que je pense aussi mais elle s'affiche bien a la ligne precedentes ! il y a un probleme je pense avec  

Code :
  1. strncpy (chaine, &tmp->Vol.distance,1);

n°407244
Taz
bisounours-codeur
Posté le 25-05-2003 à 20:29:35  profilanswer
 

voir mon post précédent
 
utlise fprintf comme si tu utilises printf

n°407256
touxe
Posté le 25-05-2003 à 20:41:35  profilanswer
 

c pareil ca fait des choses bizar !

mood
Publicité
Posté le 25-05-2003 à 20:41:35  profilanswer
 

n°407259
Taz
bisounours-codeur
Posté le 25-05-2003 à 20:43:53  profilanswer
 

ah ben ok. tu utilies un char pour stocker du numérique et pas de l'ascii, donc tu imprimes le caractere de code ascii de valeur ton char
 
bref utilises fprintf

n°407293
touxe
Posté le 25-05-2003 à 21:30:38  profilanswer
 

g donc fait ceci
 

Code :
  1. strncpy (chaine, &tmp->Vol.distance,1);
  2.  //strncat (chaine, "\0", 2);
  3.  chaine[0] = chaine[0]+48;
  4.  fprintf (fichier, chaine);


 
il me rentre alors ds le fichier
 

Citation :

2ÌÌÌ
1ÌÌÌÀC
<ÌÌÌ0
0ÌÌÌÀC
:ÌÌÌðC
?ÌÌÌ
@ÌÌÌ


 
au lieu de
 

Citation :


2
1
0
12
10
15
16

n°407296
Taz
bisounours-codeur
Posté le 25-05-2003 à 21:32:26  profilanswer
 

putain, te syeux et ton cerveau tu t'en sers?
 
comme dis des mon premeir post
 
printf("%d ",tmp->Vol.distance);
|
v
fprintf(fichier, "%d ",tmp->Vol.distance);

n°407297
touxe
Posté le 25-05-2003 à 21:35:08  profilanswer
 

Nickel merci !
 
desoler de t'avoir enerver mais g regarder la definition de fprintf ds la msdn et je savais pas que je pouvais mettre un format --> %d

n°407298
Taz
bisounours-codeur
Posté le 25-05-2003 à 21:37:04  profilanswer
 

ben pour ton information, printf est un alias à fprintf(stdout


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

  Aide ecriture fichier

 

Sujets relatifs
[C/C++] Comparaison de fichier: fread / fgetcLire les données d'un fichier sur le PC client
Mettre un fichier son (mp3) dans un cadre d'objet indépendant[BusinessObjects] Besoin de votre aide
Lire un fichier et stocker les valeurs dans un tableau[PHP] Problème d'ouverture de fichier : il me propose 2 fois d'ouvrir
[C/C++] lib vorbis et ouverture de fichier oggvorbis[C] Ecrire ou lire dans un fichier texte
probleme pour lire dans un fichier avec freadproblemes pour acceder a un fichier
Plus de sujets relatifs à : Aide ecriture fichier


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