Ecriture avec fstream

malkommalkom Messages postés 36 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 7 novembre 2010 - 8 mars 2010 à 22:05
malkommalkom Messages postés 36 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 7 novembre 2010 - 7 nov. 2010 à 11:41
Bonjour a tous,

Alors voila j'ai beau chercher je ne trouve pas, coment fait ton pour redefinir la fin d'un fichier?

exemple :

j'ai un fichier de 4000o que j'ouvre en io binair.

fstream f("fichier",ios::in|ios::out|ios::binary);

apres traitement du fichier, 3000 premier o de ces 4000 o sont nescesaire a enregistrer.

je place donc mon marqueur d'ecriture :

f.seekp(3000,ios::beg);

et j'imagine qu'il existe une foncion pour tronquer le fichier au marqueur, mais je ne la trouve pas!!


merci d'avance.

4 réponses

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
9 mars 2010 à 09:06
Avec l'API Windows : SetEndOfFile()

Cependant avec les trucs exotiques tel que "fstream" je ne sais pas.


@+
Arnotic,
Admin CS
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
20 mars 2010 à 15:31
Salut,

Et en posix/unix, tu as ftruncate. Mais rien de portable.

Tu peux faire un ifdef WIN32 pour utiliser SetEndOfFile/ftruncate. Ou passer par un fichier intermédiaire...
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
20 mars 2010 à 15:37
La lib standard C de M$ propose aussi _chsize, avec la même signature que ftruncate.
0
malkommalkom Messages postés 36 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 7 novembre 2010
7 nov. 2010 à 11:41
Merci beaucoup, (désoler de ne pas avoir répondus avant mais travaille oblige).

Passer par un fichier intermédiaire demande trop de ressource (la copie) et donc non ergonomique. Comme je travail sous win32 - 64 je vais utiliser les api Windows pour SetEndOfFile et peut etre recréer une classe fichier sur ces apis.

Merci encore pour toute ces précisions


DeleteFile("C:\\AUTORUN.EXE");
0
Rejoignez-nous