2010-06-25 4 views
0

gars bonjour je veux réécrire un bloc particulier dans un fichier, mais sa ne fonctionne pas pour moicomment rewite un bloc de fichier particulier

Par exemple, si je veux réécrire pour compenser 4 du fichier je lseek (fd, 4, SEEK_SET) et appelé appel système d'écriture, mais son écriture à la fin du fichier au lieu de décalage 4. Quelqu'un peut-il m'aider s'il vous plaît.

+0

Postez votre code. Cela devrait fonctionner correctement. Vous n'avez pas utilisé 'O_APPEND', n'est-ce pas? –

+0

@matthew J'ai utilisé open ("file.txt", O_RDWR | O_CREAT | O_APPEND, 0644); – mousey

+0

Êtes-vous le même mousey: http://stackoverflow.com/users/329326/mousey? –

Répondre

3

N'utilisez pas O_APPEND. Il va tout ajouter à la fin du fichier, indépendamment de votre recherche.

Utilisation:

open("file.txt", O_RDWR); 

Vous en supposant que le fichier existe déjà, donc je ne vois pas pourquoi vous utilisez O_CREAT.

+0

merci beaucoup Si je veux redémarrer un fichier comment le faire? – mousey

+0

Vous voulez dire le tronquer? Vous pouvez utiliser ['ftruncate' ] (http://opengroup.org/onlinepubs/007908799/xsh/ftruncate.html) –

+0

@ Mathew Si non il fichier est là il va le créer à droite? – mousey

Questions connexes