cs_yamatoto
Messages postés2Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention 7 juillet 2004
-
6 juil. 2004 à 16:38
GBadry
Messages postés77Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention27 février 2014
-
4 janv. 2011 à 16:08
Bonjour, j'ai un petit probleme avec un fichier dont la taille depasse 2Go. C est un fichier mixte (texte + valeur binaire).
Pour pouvoir traiter mon fichier je fais une lecture sequentielle avec a certain moment de Fseek() qui me permette de revenir en arriere.
tout alle bien jusqu a ce que mon fichier depasse la belle taille de 2Go, et que les fonctions fseek ou ftell ne se mette a renvoyer -1.
quelqu un aurait il deja eu ce type de probleme et pourrait me donner un contournement.
cs_yamatoto
Messages postés2Date d'inscriptionmardi 6 juillet 2004StatutMembreDernière intervention 7 juillet 2004 7 juil. 2004 à 11:57
, j ai trouve une solution a mon probleme, au debut j utilisais les fonctions fseek et ftell pour me repositionner ou savoir ou j etais dans le fichier, ce sont ces fonctions qui sont limitees par les int. L utilisation des fonctions fgetpos et fsetpos qui utilise non pas des int mais des structures fpos_t (ses strucures sont implementees avec des long int, big int, _int64,... suivant le systeme surlequel on se trouve).
Grace a cette utilisation le repositionnement peut se faire apres les 2Gigas fatals jusqu'alors.
GBadry
Messages postés77Date d'inscriptionjeudi 26 avril 2007StatutMembreDernière intervention27 février 20142 4 janv. 2011 à 16:08
Salut Yalatoto,
J'ai rencontré aussi le même problème et apparament il n'y a pas d'autre solution sauf le fgetpos et fsetpos.
Le problème avec ces deux fonctions c'est que si je veux incrémenter ma position, je ne peux pas.
EN d'autres termes, si par exemple j'ai reféré la position et que je veux lire une valeur réelle qui se situe juste derrière une valeur entière, je ne peux pas incrémenter ma position de 4 (taille d'un entier). Alors que celà était facilement incrémentable par le fseek ftell puisqu'elles renvoient des entiers, alors que le fgetpos et fsetpos renvoient des variables de type fpos_t.
Ma question est connais-tu comment manipuler ce type de données en faisant incrémenter ou décrémenter cette position?
Merci d'avance.
Losers are not those who try and fail, but those who even fail to try