函数
<cstdio>

tmpnam

char * tmpnam ( char * str );
生成临时文件名
返回一个字符串,包含一个与任何现有文件名都不同的文件名,因此适合安全地创建临时文件而不至于覆盖现有文件。

如果str是指向空指针,则生成的字符串存储在内部静态数组中,可通过返回值访问。此字符串的内容至少在下次调用此同一函数前都将保留,但下次调用可能会覆盖它。

如果str不是指向空指针,则它应指向一个至少包含L_tmpnam个字符的数组,该数组将被填充为建议的临时文件名。

使用此函数返回的文件名,可以使用fopen创建一个常规文件作为临时文件。与使用tmpfile创建的文件不同,此文件在关闭时不会自动删除;程序应在关闭后调用remove删除此文件。

参数

str
指向一个字符数组的指针,该数组将存储建议的临时文件名的C字符串。此数组的建议大小至少为L_tmpnam个字符。
或者,可以指定一个空指针,以使用内部静态数组存储建议的临时文件名,该文件名将由函数返回。

返回值

成功时,返回指向包含建议的临时文件名的C字符串的指针。
  • 如果str是指向空指针,则此指针指向一个内部缓冲区(其内容至少在下次调用此函数之前都将保留)。
  • 如果str不是指向空指针,则返回str
如果函数未能创建合适的文件名,则返回指向空指针。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* tmpnam example */
#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;  
}

此程序将生成两个不同的临时文件名。它们都是通过两种方法创建的,在这些方法中tmpnam可以使用。

可能的输出
Tempname #1: /s4s4.
Tempname #2: /s4s4.1


另见