c - 替换文本文档中的行的最有效方法?

标签 c file unix text text-processing

我正在学习用 C 在 Unix 中编码。到目前为止,我已经编写了代码来查找我想要替换的行的第一个字节的索引。问题在于,有时替换该行的字节数可能大于该行上已有的字节数。在这种情况下,代码开始覆盖下一行。我想出了两个标准解决方案:

a)我可以将整个文件复制到内存中,通过在必要时移动所有字节来编辑它,然后将其重写回文件,而不是尝试就地编辑文件。

b) 仅将我想要在文件末尾的行复制到内存并进行编辑。

这两个建议都不能很好地扩展。我不想对行大小施加任何限制(比如每行必须是 50 字节或其他)。有什么有效的方法可以进行线路更换吗?任何帮助将不胜感激。

最佳答案

将文件的第一部分复制到新文件(无需将其全部读入内存)。然后,编写该行的新版本。最后,复制文件的最后部分。交换文件并完成。

关于c - 替换文本文档中的行的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236231/

相关文章:

c++ - Visual Studio 不创建 .exe

unix - 如何找到文件然后PSFTP到本地系统?

c - 使用单个字符使用 strcat 的段错误

c - 如何知道组播 UDP 中的组成员数量?

c - 使为一个处理器编写的嵌入式 C 代码在另一个处理器上工作的条件是什么(当体系结构相同时)?

c - 如何扫描特定术语的字符串

python - 阅读并追加具体内容

c# - FTP 在 C# 中传输期间更改 PGP 文件

bash - 如何合并两组具有相同文件名后缀的文本文件?

linux - 按进程名称过滤并记录 CPU 使用情况