gpt4 book ai didi

c - 写入带有偏移量的文件

转载 作者:行者123 更新时间:2023-11-30 21:10:54 27 4
gpt4 key购买 nike

我正在尝试编写一个简单的代码块,将数组的内容写入文件中的某个位置。该文件是一个简单的纯文本文件。它似乎完成了所有写入操作,但文件内容最终以十六进制形式结束(开头有一堆零)。我正在使用以下内容:

FILE * fp; // file to write to
void fwritel(long offset, char * data) {
fp = fopen(filename, "w");
fseek(fp, offset, SEEK_SET);
fwrite(data, 1, strlen(data) - 1, fp);
fclose(fp);
}

我还使用了 pwrite 的变体,但不起作用:pwrite(fp, data, strlen(data) - 1, offset); 代码我正在寻找在位置 offset 处写入 data,仅将文件从 offset 修改为 offset + strlen(data).

最佳答案

这是一个多部分修复:

  1. 约阿希姆·皮勒博德是对的。使用 fopen(file, "w") 打开文件将破坏文件的内容。因此,每次打开文件时,都会将文件清零,然后写入新内容。

  2. M Oehm 也是正确的,新内容将用零填充 - 因此 Sublime 将其视为十六进制。

因此,在程序开头的某个位置仅使用

打开文件一次
fseek(fp, offset, SEEK_SET);
fwrite(data, 1, strlen(data), fp);

并在程序末尾附近的某个位置关闭文件会产生正确的输出。使用 fputc(' ') 可以,但您需要确保我没有替换您需要的字符(即之前将数据放置在文件的这些部分中)。

关于c - 写入带有偏移量的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27011741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com