共用方式為


tmpnam_s _wtmpnam_s

產生您可以用來建立暫存檔名稱。 這些是舊版 tmpnam 和 _wtmpnam 中所述的安全性增強功能與安全性功能,則在 CRT 中

errno_t tmpnam_s(
   char * str,
   size_t sizeInChars 
);
errno_t _wtmpnam_s(
   wchar_t *str,
   size_t sizeInChars 
);
template <size_t size>
errno_t tmpnam_s(
   char (&str)[size]
); // C++ only
template <size_t size>
errno_t _wtmpnam_s(
   wchar_t (&str)[size]
); // C++ only

參數

  • [out] str
    將儲存產生的名稱的指標。

  • [in] sizeInChars
    以字元為單位的緩衝區大小。

傳回值

兩種函式會傳回 0,如果成功或錯誤代碼錯誤所致。

錯誤狀況

str

sizeInChars

傳回值

內容str

NULL

任何

EINVAL

不能修改

不NULL (指向有效的記憶體)

太短

ERANGE

不能修改

如果str是NULL,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,這些函式會設定errno到EINVAL ,並傳回EINVAL。

備註

每個函式會傳回目前不存在的檔案名稱。 tmpnam_s傳回在目前的工作目錄中是唯一的名稱。 請注意,當檔案名稱會附加以反斜線和沒有路徑資訊,例如 \fname21,表示該名稱是正確的目前工作目錄。

對於tmpnam_s,您可以儲存在這個產生的檔案名稱str。 傳回字串的最大長度tmpnam_s是L_tmpnam_s,已定義在 STDIO 中。H. 如果str是NULL,然後tmpnam_s將結果留在內部的靜態緩衝區中。 因此任何後續呼叫會消滅這個值。 所產生的名稱tmpnam_s包含非程式所產生的檔名,並在第一次呼叫後tmpnam_s,副檔名為連續的數字,在基底 32 (.1-.1vvvvvu 時TMP_MAX_S STDIO 中。H 為 INT_MAX)。

tmpnam_s會自動處理多位元組字元字串引數視需要辨識多位元組字元順序,根據取自作業系統的 OEM 字碼頁。 _wtmpnam_s寬字元版本的tmpnam_s。 引數和傳回值的_wtmpnam_s是寬字元字串。 _wtmpnam_s與tmpnam_s運作方式完全相同,除了_wtmpnam_s不處理多位元組字元字串。

在 C++ 中,使用這些函式已經過簡化的樣板的多載 ; 多載可以緩衝區長度自動推斷,而不必指定 size 引數。 如需詳細資訊,請參閱 安全範本多載

泛用文字常式對應

TCHAR。H 常式

_UNICODE & 未定義的 _MBCS

定義的 _MBCS

定義 _unicode 之後

_ttmpnam_s

tmpnam_s

tmpnam_s

_wtmpnam_s

需求

常式

所需的標頭

tmpnam_s

<stdio.h>

_wtmpnam_s

<stdio.h> 或者 <wchar.h>

其他的相容性資訊,請參閱相容性在簡介中。

範例

// crt_tmpnam_s.c
// This program uses tmpnam_s to create a unique filename in the
// current working directory. 
//

#include <stdio.h>
#include <stdlib.h>

int main( void )
{   
   char name1[L_tmpnam_s];
   errno_t err;
   int i;

   for (i = 0; i < 15; i++)
   {
      err = tmpnam_s( name1, L_tmpnam_s );
      if (err)
      {
         printf("Error occurred creating unique filename.\n");
         exit(1);
      }
      else
      {
         printf( "%s is safe to use as a temporary file.\n", name1 );
      }
   }  
}

.NET Framework 對等用法

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

請參閱

參考

資料流 I/O

_getmbcp

malloc

_setmbcp

tmpfile_s