Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wygeneruj nazwy, których można użyć do tworzenia plików tymczasowych. Te funkcje to wersje funkcji tmpnam i _wtmpnam z ulepszeniami zabezpieczeń zgodnie z opisem w temacie Funkcje zabezpieczeń w narzędziu CRT.
Składnia
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
[out] Wskaźnik zawierający wygenerowaną nazwę.
sizeInChars
[in] Rozmiar buforu w znakach.
Wartość zwracana
Obie te funkcje zwracają wartość 0, jeśli operacja zakończyła się powodzeniem lub numerem błędu w przypadku błędu.
Warunki błędu
str |
sizeInChars |
Wartość zwracana | Zawartość str |
|---|---|---|---|
NULL |
dowolny | EINVAL |
niezmodyfikowane |
not NULL (wskazuje prawidłową pamięć) |
za krótki | ERANGE |
niezmodyfikowane |
Jeśli str parametr ma NULLwartość , wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, te funkcje są ustawione errno na EINVAL i zwracają wartość EINVAL.
Uwagi
Każda z tych funkcji zwraca nazwę pliku, który obecnie nie istnieje. tmpnam_s Zwraca nazwę unikatową w wyznaczonym katalogu tymczasowym systemu Windows zwróconym przez GetTempPathW. Gdy nazwa pliku jest poprzedzana ukośnikiem odwrotnym i nie ma informacji o ścieżce, takich jak \fname21, wskazuje, że nazwa jest prawidłowa dla bieżącego katalogu roboczego.
W przypadku tmpnam_sprogramu można przechowywać tę wygenerowaną nazwę pliku w pliku str. Maksymalna długość ciągu zwracanego przez tmpnam_s element to L_tmpnam_s, zdefiniowany w pliku STDIO.H. Jeśli str wartość to NULL, tmpnam_s spowoduje to pozostawienie wyniku w wewnętrznym buforze statycznym. W związku z tym wszelkie kolejne wywołania zniszczą tę wartość. Nazwa wygenerowana przez tmpnam_s program składa się z nazwy pliku wygenerowanego przez program i, po pierwszym wywołaniu metody tmpnam_s, rozszerzenie pliku kolejnych numerów w bazie 32 (.1-.1vvvvvu, gdy TMP_MAX_S w STDIO. H to INT_MAX).
tmpnam_s automatycznie obsługuje odpowiednio argumenty ciągu wielobajtowego, rozpoznając sekwencje znaków wielobajtowych zgodnie ze stroną kodową producenta OEM uzyskaną z systemu operacyjnego. _wtmpnam_s jest wersją szerokoznakową ; tmpnam_sargument i wartość zwracana _wtmpnam_s są ciągami o szerokim znaku. _wtmpnam_s i tmpnam_s zachowują się identycznie, z tą różnicą, że _wtmpnam_s nie obsługuje ciągów wielobajtowych znaków.
W języku C++używanie tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wnioskować długość buforu, eliminując konieczność określenia argumentu rozmiaru. Aby uzyskać więcej informacji, zobacz Bezpieczne przeciążenia szablonów.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
| Procedura TCHAR.H | _UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
|---|---|---|---|
_ttmpnam_s |
tmpnam_s |
tmpnam_s |
_wtmpnam_s |
Wymagania
| Procedura | Wymagany nagłówek |
|---|---|
tmpnam_s |
<stdio.h> |
_wtmpnam_s |
<stdio.h> lub <wchar.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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.