c - 用 O_RDWR 打开——如何覆盖?

标签 c file-io

我想读取一个文件并更改其内容并将其写回文件。

我使用 open 读取文件如下:

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

但是当我写的时候,它有点像附加到旧的。我怎样才能覆盖它?

最佳答案

您可以使用lseek(2)

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

如果您的文件现在比原始文件小,您需要将大小截断为新大小,否则您将在文件末尾保留旧文件末尾的字节。如果它更大,文件应该会在您写入时自动增长。

关于c - 用 O_RDWR 打开——如何覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7801315/

相关文章:

c - 如何梳理输入(方程式)并获取变量,忽略空格? (scanf()), (数组)

C SIMPLE 温度转换器/摄氏度到华氏度未知错误和输出

c - 复数算术无法正常工作

python - 将二进制数据视为文件对象?

python - 尝试在 Python 中写入文件时收到 TypeError

java - 如何将 TXT 文件加载到 JList 中?

c - 运算符优先级 - 表达式评估

c - 缓冲区大小不正确

java - 缓冲的 RandomAccessFile java

c - 将链接列表打印到现有文本文件 - 覆盖文件