Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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++ 如何使用tmpfile()获取临时文件名_C++_C - Fatal编程技术网

C++ 如何使用tmpfile()获取临时文件名

C++ 如何使用tmpfile()获取临时文件名,c++,c,C++,C,tmpfile()函数表示: 当流关闭(fclose)或程序正常终止时,创建的临时文件将自动删除。如果程序异常终止,文件是否被删除取决于特定的系统和库实现。” 函数的作用是:返回一个指向创建的临时文件的流指针,而不是文件的路径。 我需要临时文件名路径,因为它需要传递其他库函数 我的应用程序可能会异常退出,因此tmpfile()函数可以在异常退出时工作 如何获取临时文件路径并在退出时自动删除文件您可以使用tmpname(),而不是使用tmpfile() 它将返回一个可用于创建临时文件的文件名 请参

tmpfile()函数表示:

当流关闭(fclose)或程序正常终止时,创建的临时文件将自动删除。如果程序异常终止,文件是否被删除取决于特定的系统和库实现。”

函数的作用是:返回一个指向创建的临时文件的流指针,而不是文件的路径。 我需要临时文件名路径,因为它需要传递其他库函数

我的应用程序可能会异常退出,因此tmpfile()函数可以在异常退出时工作


如何获取临时文件路径并在退出时自动删除文件

您可以使用tmpname(),而不是使用tmpfile()

它将返回一个可用于创建临时文件的文件名

请参见以下示例(摘自):

#包括
int main()
{
字符缓冲区[L_tmpnam];
字符*指针;
tmpnam(缓冲器);
printf(“Tempname#1:%s\n”,缓冲区);
指针=tmpnam(NULL);
printf(“Tempname#2:%s\n”,指针);
返回0;
}
然后,您可以使用此文件名创建文件,并在退出时将其删除

编辑:

  • tmpnam返回的名称未指定任何路径。fopen使用的默认路径将是您当前的工作目录

  • 由您自行删除该文件。该操作不会自动完成。您可以通过调用来完成


如果您需要文件名,那么使用tmpfile()是没有意义的。您的目标是特定的系统(例如Linux或POSIX)或者你需要它是可移植的吗?那么改用它呢?这里有一些有用的答案:
mktemp
由于可能的竞争条件而不安全。如何获取临时文件路径并在上自动删除文件exit@hafiz:你可能想要。
#include <stdio.h>

int main ()
{
   char buffer [L_tmpnam];
   char *pointer;

   tmpnam (buffer);
   printf ("Tempname #1: %s\n", buffer);

   pointer = tmpnam (NULL);
   printf ("Tempname #2: %s\n", pointer);

   return 0;  
}