2011-10-23 85 views
1

我在寫一個輸出文件的程序。該文件包含兩部分內容。然而,第二部分是在第一部分之前計算的。我正在考慮創建一個臨時文件,將數據寫入它。然後創建一個永久文件,然後將臨時文件內容轉儲到永久文件中並刪除該文件。我看到一些帖子說這不起作用,並且它可能會在不同的編譯器之間產生一些問題。數據是一堆chars。每32個字符必須出現在不同的行上。我可以將它存儲在鏈表或其他東西中,但我不想爲此寫一個鏈表。C中的臨時文件

有沒有人有任何建議或替代方法?

+1

這些文件有多大? – Dave

+0

有多少數據,數據的性質是什麼? – ObscureRobot

+0

那麼文件可以儘可能大。數據的性質只是0和1,表示爲「chars」。 – darksky

回答

4

可以創建一個臨時文件,雖然有些人確實說他們有這個問題,我個人使用它們沒有問題。使用平臺功能獲取臨時文件是最佳選擇。不要以爲你可以在windows上寫入c:\ etc,因爲這永遠不可能。不要假設文件名incase文件已被使用等。不正確使用臨時文件是什麼導致人們的問題,而不是臨時文件不好

是否有任何理由,你不能只是保持第二部分在RAM,直到你準備好爲了第一?否則,您可以計算出第一部分所需的大小,並將該部分留空以便稍後填寫。這將消除臨時文件的需求。

+2

你能否比斷言「有人說」臨時文件存在問題更具體?文件是一個文件。如果你可以寫主輸出文件,你可以寫一個臨時文件。臨時文件的正確位置可能取決於平臺,但這不是避免臨時文件的很好理由。 – ObscureRobot

+1

對不起,我猜這取決於你如何使用它們。我個人沒有臨時文件的問題。使用平臺功能獲取臨時文件是最佳選擇。不要以爲你可以在windows上寫入c:\ etc,因爲這永遠不可能。不要假設文件已經被使用等等。正如我所說的,它沒有正確地使用它們,導致人們的問題,而不是臨時文件不好 –

+0

好得多。爲什麼不將該評論轉移到您的答案中? – ObscureRobot

1

你提出的兩種解決方案都可以工作。您可以將中間結果輸出到臨時文件,然後將該文件附加到包含要首先顯示的數據集的文件。您還可以將您的中間數據存儲在內存中。正確的數據結構取決於你想如何組織數據。

正如其他answerers筆記之一,文件本質上是平臺特定的。如果你的代碼只能在一個平臺上運行,那麼這不是一個問題。如果您需要支持多個平臺,那麼如果您使用臨時文件解決方案,則可能需要特殊情況下部分或全部這些平臺。這對於你來說是否是一個破壞行爲的決定因素取決於與將內存中的數據進行結構化和存儲相比,這會增加多少複雜性。