2011-10-23 45 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笔记之一,文件本质上是平台特定的。如果你的代码只能在一个平台上运行,那么这不是一个问题。如果您需要支持多个平台,那么如果您使用临时文件解决方案,则可能需要特殊情况下部分或全部这些平台。这对于你来说是否是一个破坏行为的决定因素取决于与将内存中的数据进行结构化和存储相比,这会增加多少复杂性。