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.