tmpnam_s
, _wtmpnam_s
Vygenerujte názvy, které můžete použít k vytvoření dočasných souborů. Tyto funkce jsou verze tmpnam
a _wtmpnam
s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
Syntaxe
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
str
[ven] Ukazatel, který obsahuje vygenerovaný název.
sizeInChars
[v] Velikost vyrovnávací paměti ve znaznachu.
Vrácená hodnota
Obě tyto funkce vrátí hodnotu 0, pokud je úspěšné, nebo číslo chyby při selhání.
Chybové podmínky
str |
sizeInChars |
Vrácená hodnota | Obsah str |
---|---|---|---|
NULL |
jakékoliv | EINVAL |
neupraveno |
not NULL (odkazuje na platnou paměť) |
příliš krátká | ERANGE |
neupraveno |
Pokud str
je NULL
, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud provádění může pokračovat, tyto funkce jsou nastaveny errno
na EINVAL
a vracet EINVAL
.
Poznámky
Každá z těchto funkcí vrátí název souboru, který aktuálně neexistuje. tmpnam_s
vrátí jedinečný název v určeném dočasném adresáři Systému Windows vrácený GetTempPathW
. Pokud je název souboru předzálohován zpětným lomítkem a neobsahuje informace o cestě, například \fname21
, značí, že název je platný pro aktuální pracovní adresář.
Pro tmpnam_s
, můžete uložit tento vygenerovaný název souboru v str
. Maximální délka řetězce vráceného tmpnam_s
řetězcem je L_tmpnam_s
definována v STDIO.H. Pokud str
ano NULL
, ponechejte tmpnam_s
výsledek v interní statické vyrovnávací paměti. Všechna následná volání tedy tuto hodnotu zničí. Název vygenerovaný tmpnam_s
pomocí programu se skládá z názvu souboru generovaného programem a po prvním volání tmpnam_s
, příponu souboru sekvenčních čísel v základu 32 (.1-.1vvvvvu, když TMP_MAX_S
v STDIO. H je INT_MAX
).
tmpnam_s
automaticky zpracovává vícebajtové řetězcové argumenty podle potřeby a rozpoznává sekvence vícebajtových znaků podle znakové stránky OEM získané z operačního systému. _wtmpnam_s
je verze širokého znaku tmpnam_s
; argument a návratová _wtmpnam_s
hodnota jsou řetězce širokých znaků. _wtmpnam_s
a tmpnam_s
chovat se identicky s tím rozdílem, že _wtmpnam_s
nezpracovává vícebajtové řetězce.
V jazyce C++ je použití těchto funkcí zjednodušeno přetíženími šablon; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminuje nutnost zadat argument velikosti. Další informace naleznete v tématu Přetížení šablon zabezpečení.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Mapování rutin obecného textu
Rutina TCHAR.H | _UNICODE a _MBCS není definován |
_MBCS definovaný |
_UNICODE definovaný |
---|---|---|---|
_ttmpnam_s |
tmpnam_s |
tmpnam_s |
_wtmpnam_s |
Požadavky
Rutina | Požadovaný hlavičkový soubor |
---|---|
tmpnam_s |
<stdio.h> |
_wtmpnam_s |
<stdio.h> nebo <wchar.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
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 );
}
}
}
C:\Users\LocalUser\AppData\Local\Temp\u19q8.0 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.1 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.2 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.3 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.4 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.5 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.6 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.7 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.8 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.9 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.a is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.b is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.c is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.d is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.e is safe to use as a temporary file.
Viz také
Vstupně-výstupní operace streamu
_getmbcp
malloc
_setmbcp
tmpfile_s