【发布时间】:2019-11-19 19:18:56
【问题描述】:
所以,假设我有一个将字符串存储到二进制文件中的 C 程序。并且在另一个二进制文件中,保存了每个字符串的第一个字节的位置。
例如。 words.bin 包含:alphacardelta
并且 pos.bin 包含:0 5 8
我想插入“beta”,让它在 alpha 和 car 之间切换。虽然我已经知道如何在 alpha 之后插入它,但我无法找到一种自动方式将它插入到正确的位置,并且不会导致任何其他单词在可能很长的列表中“消失”。有什么帮助吗?
我认为另一种可行的方法(可能更好)是在 delta 之后插入 beta,然后重新排序,但我的尝试也失败了。
任何帮助表示赞赏。
【问题讨论】:
-
到目前为止你发现了什么?
-
@user253751 如答案所述,如何在它应该去的词之后插入它。有时它运作良好,有时它会在尝试“移动它们”时覆盖其他单词。我没有发布任何代码的原因是我不断地改变它试图弄清楚所以我必须每 5 分钟更新一次。我已将此作为起点,因为它不需要代码即可理解。
-
@user253751 如果可能的话,我更喜欢用第二种方式完成(在最后插入后重新排序),但我在那里取得的进展为零
-
为什么要直接在文件里做这个?使用合适的数据结构,允许快速插入并实现对文件的读取和写入。从文件中读取数据,根据需要进行更新,如果已更改,则存储更改的数据。
-
你能弄清楚如何在内存中而不是在文件中执行此操作吗?
标签: c sorting binaryfiles binary-search