我正在学习使用C编写Unix代码。到目前为止,我编写了代码来查找要替换的行的第一个字节的索引。问题是有时候,替换该行的字节数可能大于该行上已有的字节数。在这种情况下,代码开始覆盖下一行。我提出了两个标准解决方案:
a)我不是试图就地编辑文件,而是将整个文件复制到内存中,如有必要,可以通过移动所有字节来编辑它,然后将其重写回文件。
b)仅将我想要的文件行复制到内存并进行编辑。
这两项建议都不能很好地扩展。而且我不想对行大小施加任何限制(就像每行必须是50个字节或其他东西)。有没有有效的方法来更换线路?任何帮助将不胜感激。
答案 0 :(得分:1)
将文件的第一部分复制到新文件(无需将其全部读入内存)。然后,编写该行的新版本。最后,复制文件的最后部分。交换文件并完成。