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.