Supprimer les n premiers octet d'un fichier

cs_arc59 Messages postés 32 Date d'inscription mardi 15 janvier 2002 Statut Membre Dernière intervention 24 mars 2011 - 14 janv. 2003 à 13:35
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 16 janv. 2003 à 09:11
Bonjour, dans mon programme de modification des ID 3 tag, je voudrai permettre à l'utilisateur de supprimer les Id3tag de version 2. Ces tag sont placés en debut de fichier. J'aimerai savoir comment supprimer les n premier octect d'un fichier sans passer par une copie des taille du fichier - n octect restatnt dans le fichier.

merci

2 réponses

trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
15 janv. 2003 à 16:01
Pour suprimer une partie d'un fichier je connais qu'une seul solution c'est de faire une copie temporaire quelque part.
Sinon il faudrait aller modifier la gestion des fichiers par l'OS pour dire que tel fichier se trouve les n octects plus loin, mais à mon avis il t'en empêchera.
J'ai pas bien compris: "n octect restatnt dans le fichier." tu veux les suprimer ou les modifier?
Pour les modifier il te suffit de récrire par dessus.
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
16 janv. 2003 à 09:11
C'est tout à fait exact !
Voici un code permettant simplement de faire la copie :

#include
#include <fstream>
using namespace std ;
const int N=5 ; //nombre d'octets à supprimer en-tête

int main(void){//Troncature d'un fichier
ifstream fi("In.dat",ios::in | ios::binary);
if (fi.fail()) { cout << "erreur fichier "<<endl; return 1;}
ofstream fo("Out.dat",ios::out | ios::binary);
fi.seekg(N, ios::beg);//décalage du pointeur de lecture
fo << fi.rdbuf();//ici la ligne de copie
return 0;
}
0
Rejoignez-nous