Comment optimiser la place des données dans un ofstream? [C++] - Programmation
Marsh Posté le 22-02-2002 à 23:22:49
Sous linux et win la taille d'un fichier est limitée à 4Go (enfin je crois, sans bidouille particulière)
Donc si t'écris (en ASCII) des centaines de milliers de flottants, tu risques de dépasser cette taille.
Marsh Posté le 22-02-2002 à 23:32:59
FAT16/32 : fichier de 2 Go maxi
FAT16 sous NT4 : peut-être 4 Go (vu qu'on peut faire des FAT16 de 4 Go sous NT4)
NTFS : "pas de limite" dans la taille de fichier
Linux : je sais plus quelle était la limite, mais c'était assez haut quand même. Genre 64 Go pour le ext2 ?
Marsh Posté le 22-02-2002 à 23:39:38
Comment faire pour écrire en utilisant le moins de donnée possible? C'est à dire n'utiliser que la taille d'un float pour écrire un float?
Marsh Posté le 22-02-2002 à 23:43:57
Apparemment Ext2fs avait une limite de 2Go qui a été poussée à 4To par la suite.
Marsh Posté le 23-02-2002 à 00:08:44
Alload a écrit a écrit : Comment faire pour écrire en utilisant le moins de donnée possible? C'est à dire n'utiliser que la taille d'un float pour écrire un float? |
Par exemple:
float a = 1.2654;
ofstream fout;
fout.open("toto", ofstream::binary);
fout.write((char *)(&a), sizeof(float));
fout.close()
Marsh Posté le 23-02-2002 à 23:57:28
DA TRUE CLOUSEAU a écrit a écrit : Sous linux et win la taille d'un fichier est limitée à 4Go (enfin je crois, sans bidouille particulière) Donc si t'écris (en ASCII) des centaines de milliers de flottants, tu risques de dépasser cette taille. |
hum si un float a besoin d'un ordre de 20 caracteres,
pour 300.000 flottants = 6.000.000 caracteres.
Est-ce qu'il faudrait plus de 20 caracteres pour stocker un float(32bits)?
Il doit surement y avoir un autre probleme..
(tu as plus de 6 Mo sur ton Disque dur?)
A+
LEGREG
Marsh Posté le 24-02-2002 à 09:45:14
Je me doute que le problème venait d'autre part, mais ça m'a permit de chercher la méthode avec les function write et read que vous m'avez conseillé.
Donc voilà, c'est déjà un plus.
Pour le problème, il venait surement du code de mon exportateur 3DSMax... J'en ai marre de ce putain de logiciel qui me donne des trucs imcompréhensibles...
Marsh Posté le 22-02-2002 à 23:16:34
Alors voilà l'affaire, j'ai besoin de copier un grand nombre de float dans un fichier (plus de 300 000). Le problème c'est que ça fait planter mon programme.
Je suis sûr que ça vient du flux avec le fichier, parce que si je remplace l'écriture dans le fichier par une copie de ces données dans des floats il n'y a aucun problème.
Si quelqu'un a déjà rencontré ce type de problème, ou si quelqu'un a une idée... Merci.
Edit: la nouvelle question est comment faire pour utiliser seulement la taille de la variable pour la sauvegarder dans un fichier? Par exemple que la sauvegarde d'un int ne prenne que sizeof(int) comme place.
[jfdsdjhfuetppo]--Message édité par Alload--[/jfdsdjhfuetppo]