【问题标题】:Most efficient way to replace a line in a text document ?替换文本文档中一行的最有效方法?
【发布时间】:2016-05-16 03:26:26
【问题描述】:

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

a) 与其尝试就地编辑文件,不如将整个文件复制到内存中,必要时通过移动所有字节进行编辑,然后将其重新写入文件。

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

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

【问题讨论】:

  • 如果替换更短,问题也一样,因为无法删除文件中间的字符。
  • @rici 我想我可以用空格替换剩余的字符...

标签: c file unix text text-processing


【解决方案1】:

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

【讨论】:

  • 简洁明了!能够很好地处理各种文件大小和错误的基本设计。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 2018-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2016-05-09
相关资源
最近更新 更多