2015-05-17 38 views
1

我想从文本文件中读取特定行,而不是逐行读取整个文件。例如,如果我在文本文件中有10行,并且必须读取第6行,我将不会读取前5行,而是直接读取第6行。谁能帮我??从文本文件中读取特定行而不读取C中的整个文件。

+3

偏移发现偏移如果线的长度是不固定这是不可能的(如果该文件不存在索引)。 – BLUEPIXY

+3

真的没有办法做到这一点,因为你不能说在一个普通的文本文件中的文件行开始的位置。你只需循环,并在所需行之前阅读(并放弃)所有行。 –

+6

如果“行”具有固定长度,则可以使用'fseek'。否则,没有办法做到这一点。 – szczurcio

回答

3

这个问题的答案here

从上面引述,

除非你多了解一下这个文件,你不能随意访问特定行。新的行由行结束字符的存在划分,并且它们通常可以发生在任何地方。文本文件不带有地图索引,这将允许您跳到第行。

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

现金引述回答是通过David Heffernan

0

你可以 '索引' 的文件。请注意,这仅仅是值得的,如果你的文本文件:

  • 经常阅读,很少写

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

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

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

查找线ň需要两个旨在:

  1. 读取Ñ从索引
  2. 读取从文本文件中的一行,起始于在索引