C中的临时文件

时间:2011-10-23 21:09:52

标签: c file file-io

我正在编写一个输出文件的程序。该文件包含两部分内容。然而,第二部分是在第一部分之前计算的。我正在考虑创建一个临时文件,将数据写入其中。然后创建一个永久文件,然后将临时文件内容转储到永久文件中并删除该文件。我看到一些帖子说这不起作用,它可能会在不同的编译器之间产生一些问题。

数据是一堆chars。每32个字符必须出现在不同的行上。我可以将它存储在链接列表或其他内容中,但我不想为此编写链接列表。

有没有人有任何建议或替代方法?

2 个答案:

答案 0 :(得分:4)

可以创建一个临时文件,虽然有些人说他们有这个问题,我个人已经毫无问题地使用它们了。使用平台功能获取临时文件是最佳选择。不要以为你可以写在Windows上的c:\ etc,因为这总是不可能的。不要假设一个文件名,因为文件已被使用等。不正确使用临时文件是导致人们出现问题的原因,而不是临时文件不好

在你为第一部分做好准备之前,有没有理由不能将第二部分保留在ram中?否则,您是否可以计算出第一部分所需的大小,并将文件的该部分留空以便稍后再回来填写。这将消除临时文件的需要。

答案 1 :(得分:1)

您提出的两种解决方案都可行。您可以将中间结果输出到临时文件,然后将该文件附加到包含要首先显示的数据集的文件中。您还可以将中间数据存储在内存中。正确的数据结构取决于您希望如何组织数据。

正如其他回答者所指出的那样,文件本质上是特定于平台的。如果您的代码只能在单一平台上运行,那么这不是一个问题。如果您需要支持多个平台,那么如果您使用临时文件解决方案,则可能需要特殊情况下的部分或全部平台。这对您来说是否是一个交易破坏者取决于与在内存中构建和存储数据相比增加了多少复杂性。