ouvrir avec O_RDWR – comment écraser?

Je veux lire un fichier et changer son contenu et l’écrire dans le fichier.

J’utilise open pour lire un fichier comme suit:

 bfd = open(m_file_name.c_str(), O_RDWR) 

Mais quand j’écris, c’est un peu annexé à l’ancien. Comment puis-je l’écraser?

Vous pouvez utiliser lseek(2)

 bfd = open(m_file_name.c_str(), O_RDWR); // read your file lseek(bfd, 0, SEEK_SET); // do whatever manipulation & write file 

Si la taille de votre fichier est maintenant inférieure à celle de l’original, vous devrez en tronquer la taille à la nouvelle taille ou laisser les octets de l’ancienne partie à la fin. S’il est plus volumineux, le fichier devrait grossir automatiquement au fur et à mesure que vous écrivez.

Vous devez chercher avec lseek si vous voulez écrire à un poste spécifique.

Vous n’essayez pas de remplacer le fichier entier, n’est-ce pas? Juste une petite partie de ça? Si vous essayez d’écraser l’ensemble du fichier, c’est une mauvaise façon de le faire.