gergalp
Messages postés70Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 mars 2007
-
30 mars 2005 à 00:57
angsthase
Messages postés72Date d'inscriptionmardi 20 juillet 2004StatutMembreDernière intervention11 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.
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 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
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 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 ::.)~
Vous n’avez pas trouvé la réponse que vous recherchez ?