从文本文件中读取特定行而不读取C中的整个文件

时间:2015-05-17 15:15:52

标签: c

我想从文本文件中读取特定行,而不是逐行读取整个文件。例如,如果我在文本文件中有10行并且我必须读取第6行,我将不会读取前5行,而是直接读取第6行。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

此问题已解答here

从上面引用,

  

除非您了解有关该文件的更多信息,否则无法随机访问特定行。新行由行末字符的存在分隔,并且它们通常可以在任何地方出现。文本文件没有 map index ,可以跳到n th 行。

     

如果您知道,例如,文件中的每一行都是相同的长度,那么您可以使用随机访问来跳转到特定的行。如果没有这方面的额外知识,你就别无选择,只能遍历整个文件,直到达到你想要的一行。

致谢:引用的回答是David Heffernan

答案 1 :(得分:0)

你可以索引'文件。请注意,只有您的文本文件:

才值得付出努力
  • 很大
  • 经常阅读,很少写

最简单(也可能是最有效)的方法是使用数据库引擎。只需将文件存储在一个表中,每行一行。

或者,您可以创建自己的索引机制。基本上,这意味着:

  • 创建一个新文件( index
  • 扫描整个文本文件一次,将每行的偏移量存储在索引文件中
  • 每次文本文件更改时重复上述内容

在文本文件中查找 n 行需要两次搜索:

  1. 从索引
  2. 读取 n th 偏移量
  3. 从文本文件中读取一行,从索引
  4. 中找到的偏移量开始