Sdílet prostřednictvím


tmpnam_s, _wtmpnam_s

Generovat názvy, které lze použít k vytvoření dočasných souborů.Tyto verze jsou tmpnam a _wtmpnam s vylepšení zabezpečení popsaným v Funkce zabezpečení v 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

Parametry

  • [výstup]str
    Ukazatel, který bude uchovávat vygenerovaný název.

  • [v]sizeInChars
    Velikost vyrovnávací paměti ve znacích.

Vrácená hodnota

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

Chybové podmínky

str

sizeInChars

Vrácená hodnota

Obsahstr

NULL

žádné

EINVAL

Nezměněno

není NULL (odkazuje na platný paměti)

příliš krátké

ERANGE

Nezměněno

Pokud str je NULL, vyvolat neplatný parametr popisovače, jak je popsáno v Ověření parametru.Pokud je povoleno spuštění pokračovat, nastavit tyto funkce errno na EINVAL a vrátit se EINVAL.

Poznámky

Každá z těchto funkcí vrátí název souboru, který aktuálně neexistuje.tmpnam_sVrátí název jedinečný v aktuální pracovní adresář.Poznámka: než při pre čekajícího zpětným lomítkem a žádné informace o cestě, jako je například \fname21, je název souboru označuje název je platný pro aktuální pracovní adresář.

Pro tmpnam_s, můžete uložit tento název souboru generovaného v str.Maximální délka řetězce, vrátí tmpnam_s je L_tmpnam_s, definované v STDIO.H.Pokud str je NULL, pak tmpnam_s ponechá výsledek v statickou vnitřní vyrovnávací paměť.Následující volání tedy zničit tuto hodnotu.Název generovaný tmpnam_s se skládá z názvu souboru generované programem a po první volání tmpnam_s, pořadová čísla v základní 32 příponu souboru (při.1-.1vvvvvu TMP_MAX_S v STDIO.INT_MAX je H).

tmpnam_sautomaticky zpracovává argumenty řetězec vícebajtových znaků podle potřeby UZNÁVAJÍCE vícebajtové znakové sekvence podle znaková stránka OEM získaného z operačního systému._wtmpnam_sje verze celého znaku tmpnam_s; hodnota argumentu a návrat _wtmpnam_s jsou celý znak řetězce._wtmpnam_sa tmpnam_s s výjimkou, že se chovají stejně _wtmpnam_s nezpracovává vícebajtové znakové řetězce.

V jazyce C++ použití těchto funkcí je zjednodušeno díky šablony přetížení; přetížení lze odvodit vyrovnávací paměti automaticky, není tedy třeba zadat argument velikost.Další informace naleznete v tématu Přetížení zabezpečení šablony.

Obecný Text rutinní mapování

TCHAR.Rutina H

_UNICODE & _MBCS není definován

_MBCS, definice

_UNICODE, definice

_ttmpnam_s

tmpnam_s

tmpnam_s

_wtmpnam_s

Požadavky

Rutina

Požadované záhlaví

tmpnam_s

<stdio.h>

_wtmpnam_s

<stdio.h> nebo <wchar.h>

Další informace o kompatibilitě, viz Compatibility v úvodu.

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 );
      }
   }  
}

Ekvivalent v rozhraní .NET Framework

Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

I/O proudu

_getmbcp

malloc

_setmbcp

tmpfile_s