使用lseek访问特定记录

时间:2011-03-25 05:03:31

标签: c++ c unix

是否可以在不知道每条记录大小的情况下访问文本文件中的特定索引(使用特定索引)?

3 个答案:

答案 0 :(得分:3)

如果您保留单独的记录偏移索引,那么您可以简单地查询它以寻找适当的位置。否则,没有。

答案 1 :(得分:0)

如果记录恰好在方便的键上排序,并且您可以识别一个记录的结束而另一个记录的开始,那么您可以实现二进制或插值搜索方法。您可以追溯性地将其添加到文本文件格式以帮助查找。否则,您将陷入具有已知索引的位置的串行搜索(显然文件的开头是1,如果您知道可以从文件末尾向后工作的记录总数)。您还可以考虑执行一次传递来创建索引以允许直接访问,或者让文件嵌入可以轻松读取的偏移列表。

答案 2 :(得分:0)

查看dbopen()函数。如果将DB_RECNO作为类型参数传递,则可以访问可变长度记录。这些记录可以用换行符分隔。基本上你的“数据库”是一个平面文本文件。

API也可以方便地为您处理插入和删除。