[C] Question sur les fichiers

Question sur les fichiers [C] - C++ - Programmation

Marsh Posté le 23-03-2003 à 13:48:12    

Salut!
Je veux écrire un tableau de int dans un fichier et le récupérer après, le problème c'est qu'il est très gros (700 000 cases) et ses valeurs varient aléatoirement de 0 à 2000.
 
Si je l'enregistre en mode texte, je suis obligé de mettre un espace à chaque valeur écrite, avec un fprintf(fichier,"%i ",tab[i]); .Je les récupére ensuite avec un fscanf(fichier,%i ",tab[i]); .
 
Mais avec des espaces, le fichier devient presque 2 fois plus gros! Ya pas moyen de mettre autre chose qu'un espace entre chaque valeur et que ca prenne moins de place? (tout en récupérant le même tableau bien sur)  
sinon ya bien des autres commandes pour écrire dans un fichier comme fwrite et fputc, mais je sais pas trop m'en servir...aidez moi svp.

Reply

Marsh Posté le 23-03-2003 à 13:48:12   

Reply

Marsh Posté le 23-03-2003 à 14:18:59    


Une méthode simple : (y a mieux, mais plus complexe)
Tes valeurs sont comprises entre 0 et 2000 => type unsigned short.
Le truc c'est d'écrire tes valeurs de cette facon :
(me souviens plus trop comment marche fwrite, mais ca doit ressembler a ca)
 

Code :
  1. USHORT val = 1500;
  2. fwrite((char*)&val, sizeof (USHORT), sizeof (USHORT), tonfichier);


 
ton fichier est plus trop en mode texte, et donc plus d'espaces... ensuite pour lire tu fais la meme chose :
 

Code :
  1. USHORT val;
  2. fread((char*)&val, sizeof (USHORT), sizeof (USHORT), tonfichier);


 
voila. c une solution simple, a optimiser, surtout qd on sait que dans un USHORT on peut mettre juska 65535, donc un nb x fois tes valeurs qui vont de 0 a 2000. (j'arrive plus a savoir combien vaut x la, j'ai mon cerveau en mode pause, et en plus j'ai fait epita alors je sais plus compter)
 
 
ps : désolé pour le "sizeof (USHORT)", mais ca me fait trop kiffer de mettre des trucs comme ca.

Reply

Marsh Posté le 23-03-2003 à 14:52:01    

Merci :)
Et si jamais g des valeurs positives et négatives dans mon tableau ca marchera aussi?

Reply

Marsh Posté le 23-03-2003 à 15:02:11    

*LighTninG* a écrit :

Merci :)
Et si jamais g des valeurs positives et négatives dans mon tableau ca marchera aussi?  


 
moui ca devrait marcher aussi... meme si tu mets des float des nivos ou des bordels, du moment que tu ecris/lis des types dont tu t'es mis d'accord...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed