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
1
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
14
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
14
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