2015-05-17 67 views
1

我想從文本文件中讀取特定行,而不是逐行讀取整個文件。例如,如果我在文本文件中有10行,並且必須讀取第6行,我將不會讀取前5行,而是直接讀取第6行。誰能幫我??從文本文件中讀取特定行而不讀取C中的整個文件。

+3

偏移發現偏移如果線的長度是不固定這是不可能的(如果該文件不存在索引)。 – BLUEPIXY

+3

真的沒有辦法做到這一點,因爲你不能說在一個普通的文本文件中的文件行開始的位置。你只需循環,並在所需行之前閱讀(並放棄)所有行。 –

+6

如果「行」具有固定長度,則可以使用'fseek'。否則,沒有辦法做到這一點。 – szczurcio

回答

3

這個問題的答案here

從上面引述,

除非你多瞭解一下這個文件,你不能隨意訪問特定行。新的行由行結束字符的存在劃分,並且它們通常可以發生在任何地方。文本文件不帶有地圖索引,這將允許您跳到第行。

如果您知道該文件中的每一行都是相同的長度,那麼您可以使用隨機訪問來跳轉到特定行。沒有這種類型的額外知識,你只能無奈地遍歷整個文件,直到達到你想要的行。

現金引述回答是通過David Heffernan

0

你可以 '索引' 的文件。請注意,這僅僅是值得的,如果你的文本文件:

  • 經常閱讀,很少寫

最簡單的(也可能是最有效的)方法是使用數據庫引擎。只需將您的文件存儲在一張表中,每行一行。

或者,您可以創建自己的索引機制。基本上,這意味着:

  • 創建一個新文件(索引
  • 掃描整個文本文件一次,存儲在索引文件中的每一行的偏移
  • 重複上述各時間的文本文件中的文本文件更改

查找線ň需要兩個旨在:

  1. 讀取Ñ從索引
  2. 讀取從文本文件中的一行,起始於在索引