Sdílet prostřednictvím


_tempnam, _wtempnam, tmpnam, _wtmpnam

Generovat názvy, které můžete použít k vytvoření dočasných souborů.Bezpečnější verze některých z těchto funkcí jsou k dispozici; viz tmpnam_s, _wtmpnam_s.

char *_tempnam(
   const char *dir,
   const char *prefix 
);
wchar_t *_wtempnam(
   const wchar_t *dir,
   const wchar_t *prefix 
);
char *tmpnam(
   char *str 
);
wchar_t *_wtmpnam(
   wchar_t *str 
);

Parametry

  • prefix
    Řetězec, který bude pre čekajícího na vrácené názvy _tempnam.

  • dir
    Cesta do pole název souboru neexistuje žádná proměnná prostředí TMP nebo TMP není platný adresář.

  • str
    Ukazatel, který bude obsahovat název a bude mít stejný název vrácené funkcí.To je praktický způsob, jak uložit generovaný název.

Vrácená hodnota

Každá z těchto funkcí vrací ukazatel na název generovaný nebo NULL Pokud dojde k selhání.Selhání může dojít, pokud se pokusíte více než TMP_MAX (viz STDIO.H) hovory s tmpnam nebo _tempnam a je neplatný název adresáře uvedené v systémové proměnné TMP a v dir parametr.

[!POZNÁMKA]

Ukazatele vrácené tmpnam a _wtmpnam přejděte na vnitřní vyrovnávací paměti statické.bez neměla by být volána k navrácení těchto ukazatelů.freemusí být volána pro ukazatele přidělené _tempnam a _wtempnam.

Poznámky

Každá z těchto funkcí vrací název souboru, který je aktuálně neexistuje.tmpnamVrací název jedinečné v aktuální pracovní adresář a _tempnam umožňuje generovat jedinečný název adresáře, než je aktuální.Všimněte si, než když je název souboru pre čekajícího s zpětné lomítko () a žádné informace o cestě, například \fname21, znamená to, zda je název platný pro aktuální pracovní adresář.

Pro tmpnam, lze uložit tento název generovaného souboru v str.Pokud str je NULL, pak tmpnam opustí výsledek ve statické vnitřní vyrovnávací paměť.Proto jakékoli následné volání zničit tuto hodnotu.Název generovaný tmpnam se skládá z názvu souboru generované programem a po první volání tmpnam, příponu souboru pořadová čísla v základní 32 (.1-.vvu při TMP_MAX v STDIO.H je 32 767).

_tempnambude generovat jedinečný název adresáře zvolil následující pravidla:

  • Pokud prostředí proměnná TMP je určeno nastavena na platný název adresáře, budou generovány jedinečných názvů souborů pro adresář určený parametrem TMP.

  • Pokud není definována proměnná prostředí TMP nebo pokud je nastavena na název adresáře, který neexistuje, _tempnam použije dir parametr jako cesta, pro kterou vygeneruje jednoznačné názvy.

  • Pokud není definována proměnná prostředí TMP nebo pokud je nastavena na název adresáře, který neexistuje a pokud dir je NULL nebo nastavte na název adresáře, který neexistuje, _tempnam ke generování jedinečných názvů použije aktuální pracovní adresář.Nyní pokud oba TMP a dir zadat názvy adresářů, které neexistují, _tempnam volání funkce se nezdaří.

Název vrácené _tempnam bude složen z prefix a pořadové číslo, které bude kombinovat vytvořit jedinečný název souboru pro zadaný adresář._tempnamgeneruje názvy souborů bez přípony._tempnampoužívá malloc přidělit prostor souboru; program je odpovědný za uvolnění tohoto místa, pokud již není potřeba.

_tempnama tmpnam automaticky získat popisovač vícebajtových znaků řetězcové argumenty podle potřeby, uznávajíce vícebajtové znakové sekvence podle znaková stránka OEM operačního systému._wtempnamje verze širokého znaku _tempnam; argumenty a vrácené hodnoty _wtempnam jsou řetězci širokého znaku._wtempnama _tempnam chovaly stejně jako s výjimkou _wtempnam zpracovává vícebajtové znakové řetězce._wtmpnamje verze širokého znaku tmpnam; hodnota argumentu a návrat _wtmpnam jsou řetězci širokého znaku._wtmpnama tmpnam chovaly stejně jako s výjimkou _wtmpnam zpracovává vícebajtové znakové řetězce.

Pokud _DEBUG a _CRTDBG_MAP_ALLOC jsou definovány, _tempnam a _wtempnam se nahrazují volání _tempnam_dbg a _wtempnam_dbg.

Rutinní mapování obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definováno

_MBCS definováno

_UNICODE definováno

_ttmpnam

tmpnam

tmpnam

_wtmpnam

_ttempnam

_tempnam

_tempnam

_wtempnam

Požadavky

Rutina

Požadované záhlaví

_tempnam

<stdio.h>

_wtempnam, _wtmpnam

<stdio.h> nebo <wchar.h>

tmpnam

<stdio.h>

Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.

Příklad

// crt_tempnam.c
// compile with: /W3
// This program uses tmpnam to create a unique filename in the
// current working directory, then uses _tempnam to create 
// a unique filename with a prefix of stq. 

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

int main( void )
{   
   char* name1 = NULL;
   char* name2 = NULL;

   // Create a temporary filename for the current working directory: 
   if( ( name1 = tmpnam( NULL ) ) != NULL ) // C4996
   // Note: tmpnam is deprecated; consider using tmpnam_s instead
      printf( "%s is safe to use as a temporary file.\n", name1 );
   else
      printf( "Cannot create a unique filename\n" );

   // Create a temporary filename in temporary directory with the
   // prefix "stq". The actual destination directory may vary
   // depending on the state of the TMP environment variable and
   // the global variable P_tmpdir.   

   if( ( name2 = _tempnam( "c:\\tmp", "stq" ) ) != NULL )
      printf( "%s is safe to use as a temporary file.\n", name2 ); 
   else
      printf( "Cannot create a unique filename\n" );

   // When name2 is no longer needed :   
   if(name2)
     free(name2);
     
}
  

Ekvivalent v rozhraní .NET Framework

Nelze použít. Pokud chcete volat standardní funkci jazyka C, použijte PInvoke. Další informace naleznete v tématu Příklady vyvolání platformy.

Viz také

Referenční dokumentace

I/O proudu

_getmbcp

malloc

_setmbcp

tmpfile

tmpfile_s