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