2012-04-05 34 views
0

我正在編寫win32中的一個老派mmorpg(它應該在非常舊的機器上運行),並且我想要讀取一個可以是ASCII或Unicode(很少)的文件,並且可以統計它的行數。由於這些機器的內存非常低,因此我無法一次將超過4KB的內存保存在內存中。在win32中讀取一個文件

有什麼想法? 謝謝

+2

你只需要擁有*一行足夠的存儲空間*在文件中。如果你只需要數線,那甚至不會。只需使用fgets()函數即可。繼續調用它直到它返回NULL。在最後檢查返回的字符串'\ n',當你看到它時增加行計數器。 – 2012-04-05 18:12:35

+0

這是客戶端還是服務器?當然,如果沒有相當多的資源,你不可能製作出「大規模多人遊戲」的遊戲。 – geoffspear 2012-04-05 18:15:38

回答

2

一次以小塊讀取文件,說你的內存預算的大小的十分之一。在每個塊中計算行結束。

你唯一真正面臨的問題是你需要處理從一個塊的末尾到下一個塊的開始的cr + lf對。

另外,你的意思是4MB而不是4KB?

+0

它甚至可以通過忽略除退貨車和換行符(取決於行結束約定)之外的所有文件來達到峯值。這樣做很快,足跡幾乎可以忽略不計。 – 2012-04-05 18:01:57

+0

@Mike這正是我所提出的。 – 2012-04-05 18:02:41

+0

當他說他只能在內存中存儲大約4KB時,不會有讀128KB的問題嗎?就是想。 – 2012-04-05 18:03:44

0

剛剛提出的東西有點不同......

type foo.txt|find /C /V "~`[email protected]#$%^&*()_+" 

或者真的只是下面我想......是一段時間

find /C /V "" foo.txt