Troquer un fichier avec stdio.h

gergalp Messages postés 70 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 mars 2007 - 30 mars 2005 à 00:57
angsthase Messages postés 72 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 11 avril 2005 - 4 avril 2005 à 09:21
je voudrais savoir s'il existe une fonction dans stdio.h pour tronquer un fichier, c'est à dire retirer X octets en fin de fichier, et par extension, si il y a un moyen de retirer X octets n'importe où dans le fichier, sans tout réécrire.

6 réponses

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
30 mars 2005 à 06:06
avec <stdio.h> j'en doute mais avec l'API Windows directement oui

CreateFile() pour ouvrire le fichier
SetFilePointer() pour déplacer le curseur dans le fichier la ou tu veux
SetEndOfFile() pour marquer la fin du fichier la ou ce trouve le curseur
CloseHandle() pour pour fermer le fichier(à la fin)

Pour retirer x octet(s) dans un fichier sans tout réécrire, tu peux utiliser le FileMapping

dans l'ordre:
- CreateFile()
- CreateFileMapping()
- MapViewOfFile()
- memmove() pourait faire l'affaire(pour déplacer tes octets)
- UnmapViewOfFile()
- CloseHandle(CreateFileMapping())
- CloseHandle(CreateFile())
(voir MSDN pour _tous_ les détails)

Si tu as trop de difficulté, je pourrais te faire un exemple.

~(.:: NitRic ::.)~
0
angsthase Messages postés 72 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 11 avril 2005 1
30 mars 2005 à 09:33
Pour moi, est ce que tu pourrais me faire un exemple stp !!!

Merci d'avance.


AngstHase
0
gergalp Messages postés 70 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 mars 2007
30 mars 2005 à 20:10
ben perso, le but était de faire un code portable, donc pas d'API windows
0
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
2 avril 2005 à 01:44
gargalp, le filemapping existe aussi sous Linux alors tu pourrais te faire un petit module
Win/Linux

#if WINDOWS
/* fonctions/code pour windows */
#else /* on assume que c'est linux */
/* fonctions/code pour linux */
#endif

la macro `WINDOWS` n'est pas valide, faut voir au niveau des compilos/systèmes/...
pour ce qui est du filemapping sous linux, je ne sais pas comment faire, je ne code que sous Windows, désolé ...

angsthase, c'est d'accord, j'vais faire un exemple(pour Windows) et je vais le poster d'ici une journée ou deux.

~(.:: NitRic ::.)~
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
3 avril 2005 à 04:45
angsthase, voilà l'exemple:

http://www.cppfrance.com/code.aspx?ID=30502

~(.:: NitRic ::.)~
0
angsthase Messages postés 72 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 11 avril 2005 1
4 avril 2005 à 09:21
Merci !


AngstHase
0
Rejoignez-nous