函式
<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


另見