_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.