Sdílet prostřednictvím


tmpnam_s, _wtmpnam_s

Vygenerujte názvy, které můžete použít k vytvoření dočasných souborů. Tyto funkce jsou verze tmpnam a _wtmpnam s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

Syntaxe

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

Parametry

str
[ven] Ukazatel, který obsahuje vygenerovaný název.

sizeInChars
[v] Velikost vyrovnávací paměti ve znaznachu.

Vrácená hodnota

Obě tyto funkce vrátí hodnotu 0, pokud je úspěšné, nebo číslo chyby při selhání.

Chybové podmínky

str sizeInChars Vrácená hodnota Obsah str
NULL jakékoliv EINVAL neupraveno
not NULL (odkazuje na platnou paměť) příliš krátká ERANGE neupraveno

Pokud str je NULL, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud provádění může pokračovat, tyto funkce jsou nastaveny errno na EINVAL a vracet EINVAL.

Poznámky

Každá z těchto funkcí vrátí název souboru, který aktuálně neexistuje. tmpnam_s vrátí jedinečný název v určeném dočasném adresáři Systému Windows vrácený GetTempPathW. Pokud je název souboru předzálohován zpětným lomítkem a neobsahuje informace o cestě, například \fname21, značí, že název je platný pro aktuální pracovní adresář.

Pro tmpnam_s, můžete uložit tento vygenerovaný název souboru v str. Maximální délka řetězce vráceného tmpnam_s řetězcem je L_tmpnam_sdefinována v STDIO.H. Pokud str ano NULL, ponechejte tmpnam_s výsledek v interní statické vyrovnávací paměti. Všechna následná volání tedy tuto hodnotu zničí. Název vygenerovaný tmpnam_s pomocí programu se skládá z názvu souboru generovaného programem a po prvním volání tmpnam_s, příponu souboru sekvenčních čísel v základu 32 (.1-.1vvvvvu, když TMP_MAX_S v STDIO. H je INT_MAX).

tmpnam_s automaticky zpracovává vícebajtové řetězcové argumenty podle potřeby a rozpoznává sekvence vícebajtových znaků podle znakové stránky OEM získané z operačního systému. _wtmpnam_s je verze širokého znaku tmpnam_s; argument a návratová _wtmpnam_s hodnota jsou řetězce širokých znaků. _wtmpnam_s a tmpnam_s chovat se identicky s tím rozdílem, že _wtmpnam_s nezpracovává vícebajtové řetězce.

V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminuje nutnost zadat argument velikosti. Další informace naleznete v tématu Přetížení šablon zabezpečení.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

Rutina TCHAR.H _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_ttmpnam_s tmpnam_s tmpnam_s _wtmpnam_s

Požadavky

Rutina Požadovaný hlavičkový soubor
tmpnam_s <stdio.h>
_wtmpnam_s <stdio.h> nebo <wchar.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// 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 );
      }
   }
}
C:\Users\LocalUser\AppData\Local\Temp\u19q8.0 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.1 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.2 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.3 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.4 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.5 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.6 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.7 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.8 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.9 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.a is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.b is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.c is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.d is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.e is safe to use as a temporary file.

Viz také

Vstupně-výstupní operace streamu
_getmbcp
malloc
_setmbcp
tmpfile_s