2013-03-25 106 views
3

我有一個文件打開fopen。有一種方法可以重新打開相同的文件(雖然它是打開的),但有不同尋求? (所以我可以獨立使用fread)C多次打開文件

+0

沒有任何影響是的,但你爲什麼不試試呢? (實際上可能取決於操作系統) – 2013-03-25 17:08:57

+0

如果你想在文件中讀取多個偏移量,mmap()可能也是一個選項,具體取決於你的操作系統。然後,您可以使用內存地址將文件索引到文件中。 – FatalError 2013-03-25 17:11:46

+3

@GeorgSchölly對於具有未定義/未指定/實現定義行爲的語言而言,這通常是一個非常糟糕的建議。 – BoBTFish 2013-03-25 17:12:06

回答

5

如果你只是繼續閱讀,沒有問題。

要小心,如果你在文件中寫的,特別是如果你有一個具有讀訪問2個線程/在同一時間

寫入文件如果你的代碼看起來像

FILE *fp1, *fp2; 

fp1 = fopen("file", "r"); 
fp2 = fopen("file", "r"); 

那麼你在同一個文件中有2個尋找。並且尋求的位置是獨立的。從fp1讀取fp2

+0

不,不,我需要的文件是隻讀! – polslinux 2013-03-25 17:09:54

+1

@polslinux另一個選項(也許更穩定)是創建一個維護每個查找點的結構,並使用一個函數從頭讀取。 – 2013-03-25 17:10:52

+0

所以沒有問題。您可以多次打開文件並同時搜索多個文件 – MOHAMED 2013-03-25 17:11:13