Sdílet prostřednictvím


_tempnam, _wtempnam, tmpnam, _wtmpnam

Generovat názvy, které lze použít k vytvoření dočasných souborů.Některé z těchto funkcí bezpečnější verze jsou k dispozici; see 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 názvy vrácené _tempnam.

  • dir
    Cesty používané v názvu souboru, pokud žádné systémové proměnné TMP nebo TMP není platný adresář.

  • str
    Ukazatel, který bude uchovávat vygenerovaný název a bude stejný jako název funkce.Toto je pohodlný způsob, jak uložit vygenerovaný název.

Vrácená hodnota

Každá z těchto funkcí vrací ukazatel na název generovaný nebo NULL při selhání.Selhání může dojít, pokusíte-li více než TMP_MAX (viz STDIO.H) volání s tmpnam nebo _tempnama 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 vnitřní vyrovnávací paměti statické.volný nesmí být volána se navrátit tyto ukazatele.freebýt volána ukazatele přidělené _tempnam a _wtempnam.

Poznámky

Každá z těchto funkcí vrátí název souboru, který aktuálně neexistuje.tmpnamVrátí název jedinečný v aktuální pracovní adresář a _tempnam umožňuje generovat jedinečný název adresáře, než je aktuální.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, můžete uložit tento název souboru generovaného v str.Pokud str je NULL, pak tmpnam ponechá výsledek v statickou vnitřní vyrovnávací paměť.Následující volání tedy zničit tuto hodnotu.Název generovaný tmpnam se skládá z názvu souboru generované programem a po první volání tmpnam, pořadová čísla v základní 32 příponu souboru (při.1-.vvu TMP_MAX v STDIO.H je 32 767.)

_tempnamvygeneruje jedinečný název adresáře podle následujících pravidel:

  • Pokud je definována proměnná prostředí TMP a nastavena na platný název adresáře bude vygenerováno jedinečné názvy pro adresáře zadaného 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 cestu, která vygeneruje jedinečné názvy.

  • Pokud není definována proměnná prostředí TMP nebo pokud je nastaven na název adresáře, který neexistuje a dir je NULL nebo název adresáře, který neexistuje, _tempnam bude používat aktuální pracovní adresář generovat jedinečné názvy.Nyní pokud obě TMP a dir zadejte názvy adresářů, které neexistují, _tempnam volání funkce se nezdaří.

Vrátí název _tempnam bude složen z prefix a pořadové číslo, které se budou kombinovat vytvořit jedinečný název souboru pro zadaný adresář._tempnamgeneruje názvy souborů, které jste žádné rozšíření._tempnampoužívá malloc přidělit prostor pro název souboru. program je zodpovědný za uvolnění tohoto místa je již potřeba.

_tempnama tmpnam automaticky popisovač řetězec vícebajtových znaků argumenty případně UZNÁVAJÍCE vícebajtové znakové sekvence podle znaková stránka OEM získaného z operačního systému._wtempnamje verze celého znaku _tempnam; argumenty a vrácené hodnoty _wtempnam jsou celý znak řetězce._wtempnama _tempnam s výjimkou, že se chovají stejně _wtempnam nezpracovává vícebajtové znakové řetězce._wtmpnamje verze celého znaku tmpnam; hodnota argumentu a návrat _wtmpnam jsou celý znak řetězce._wtmpnama tmpnam s výjimkou, že se chovají stejně _wtmpnam nezpracovává vícebajtové znakové řetězce.

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

Obecný Text rutinní mapování

TCHAR.Rutina H

_UNICODE & _MBCS není definován

_MBCS, definice

_UNICODE, definice

_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ě, viz Compatibility v úvodu.

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 Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.

Viz také

Referenční dokumentace

Proud I/O

_getmbcp

MALLOC

_setmbcp

tmpfile

tmpfile_s