Ecriture avec fstream

Signaler
Messages postés
36
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
7 novembre 2010
-
Messages postés
36
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
7 novembre 2010
-
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

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Avec l'API Windows : SetEndOfFile()

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


@+
Arnotic,
Admin CS
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
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...
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
La lib standard C de M$ propose aussi _chsize, avec la même signature que ftruncate.
Messages postés
36
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
7 novembre 2010

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");