Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的临时文件_C_File_File Io - Fatal编程技术网

C语言中的临时文件

C语言中的临时文件,c,file,file-io,C,File,File Io,我正在写一个输出文件的程序。此文件包含两部分内容。然而,第二部分在第一部分之前计算。我正在考虑创建一个临时文件,将数据写入其中。然后创建一个永久文件,然后将临时文件内容转储到永久文件中并删除该文件。我看到一些帖子说这不起作用,可能会在不同的编译器之间产生一些问题 数据是一堆字符。每32个字符必须出现在不同的行上。我可以将它存储在链表或其他东西中,但我不想为此编写链表 有人有任何建议或替代方法吗?可以创建一个临时文件,尽管有些人说他们在这方面有问题,但我个人使用它们时没有任何问题。使用平台函数获取

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

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


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

可以创建一个临时文件,尽管有些人说他们在这方面有问题,但我个人使用它们时没有任何问题。使用平台函数获取临时文件是最佳选择。不要假设您可以在windows上写入c:\etc,因为这并不总是可能的。如果文件已经被使用,不要假设文件名。不正确使用临时文件是导致人员问题的原因,而不是临时文件不好


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

可以创建临时文件,尽管有些人说他们在这方面有问题,但我个人使用它们时没有任何问题。使用平台函数获取临时文件是最佳选择。不要假设您可以在windows上写入c:\etc,因为这并不总是可能的。如果文件已经被使用,不要假设文件名。不正确使用临时文件是导致人员问题的原因,而不是临时文件不好


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

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


另一位回答者指出,文件本质上是特定于平台的。如果您的代码只在单个平台上运行,那么这就不那么重要了。如果您需要支持多个平台,那么如果使用临时文件解决方案,您可能需要对其中的一些或所有平台进行特殊处理。这对您来说是否是一个交易破坏者,取决于与在内存中构建和存储数据相比,它增加了多少复杂性。

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


另一位回答者指出,文件本质上是特定于平台的。如果您的代码只在单个平台上运行,那么这就不那么重要了。如果您需要支持多个平台,那么如果使用临时文件解决方案,您可能需要对其中的一些或所有平台进行特殊处理。这是否会破坏交易取决于与在内存中构建和存储数据相比,这会增加多少复杂性。

你能比断言“有些人确实说”临时文件存在问题更具体一些吗?文件就是文件。如果可以写入主输出文件,则可以写入临时文件。临时文件的正确位置可能取决于平台,但这并不是避免使用临时文件的重要原因。对不起,我想这取决于您如何使用它们。我个人对临时文件没有任何问题。使用平台函数获取临时文件是最佳选择。不要假设您可以在windows上写入c:\etc,因为这并不总是可能的。不要假设一个文件名,因为文件已经被使用了,等等。正如我所说的,没有正确使用它们会导致人们的问题,而临时文件会更好。为什么不把这个注释移到你的答案中呢?理想情况下,我可以创建一个链表,在一个节点中存储每个32个字符。然而,我不想写一个链表。这将需要时间,我正在做的是相当复杂的我不想浪费时间写一个链表,C不支持内置列表。那么,存储这些字符的更好方法是什么呢?任何类似列表的C实现都需要我自己从头开始编写数据结构,因此我建议使用临时文件。如果我使用一个临时文件,我需要做什么/建议来避免问题?我正在Mac上编写它,我希望它在Linux上运行。在这种情况下,我还可以使用临时文件吗?你能比断言“有些人确实说”临时文件存在问题更具体一些吗?文件就是文件。如果可以写入主输出文件,则可以写入临时文件。临时文件的正确位置可能取决于平台,但这并不是避免使用临时文件的重要原因。对不起,我想这取决于您如何使用它们。我个人对临时文件没有任何问题。使用平台函数获取临时文件是最佳选择。不要假设您可以在windows上写入c:\etc,因为这并不总是可能的。不要假设一个文件名,因为文件已经被使用了,等等。正如我所说,没有正确使用它们会导致