我正在学习用 C 在 Unix 中编码。到目前为止,我已经编写了代码来查找我想要替换的行的第一个字节的索引。问题在于,有时替换该行的字节数可能大于该行上已有的字节数。在这种情况下,代码开始覆盖下一行。我想出了两个标准解决方案:
a)我可以将整个文件复制到内存中,通过在必要时移动所有字节来编辑它,然后将其重写回文件,而不是尝试就地编辑文件。
b) 仅将我想要在文件末尾的行复制到内存并进行编辑。
这两个建议都不能很好地扩展。我不想对行大小施加任何限制(比如每行必须是 50 字节或其他)。有什么有效的方法可以进行线路更换吗?任何帮助将不胜感激。
最佳答案
将文件的第一部分复制到新文件(无需将其全部读入内存)。然后,编写该行的新版本。最后,复制文件的最后部分。交换文件并完成。
关于c - 替换文本文档中的行的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236231/