tmpnam_s, _wtmpnam_s
Generuj nazwy, których można użyć, aby utworzyć pliki tymczasowe.Są to wersje tmpnam i _wtmpnam z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w 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
[out]str
Wskaźnik, który będzie zawierać nazwa wygenerowana.[w]sizeInChars
Rozmiar bufora w znakach.
Wartość zwracana
Obie te funkcje, zwraca 0, jeśli kończy się pomyślnie lub numer błędu w przypadku awarii.
Warunki błędów
str |
sizeInChars |
Zwracanie wartości |
Zawartośćstr |
NULL |
wszelkie |
EINVAL |
Nie zmodyfikowano |
nie NULL (wskazuje prawidłowy pamięci) |
zbyt krótki |
ERANGE |
Nie zmodyfikowano |
Jeśli str jest NULL, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, ustaw te funkcje errno do EINVAL i zwraca EINVAL.
Uwagi
Każda z tych funkcji zwraca nazwę pliku, który obecnie nie istnieje.tmpnam_sZwraca nazwę unikatową w bieżącym katalogu roboczym.Należy zauważyć, gdy nazwa pliku jest pre oczekującego z ukośnikiem odwrotnym i nie informacje o ścieżce, takich jak \fname21, oznacza to, że nazwa jest nieprawidłowa dla bieżącego katalogu roboczego.
Dla tmpnam_s, można przechowywać ten generowanej nazwy pliku w str.Maksymalna długość ciągu, zwróconego przez tmpnam_s jest L_tmpnam_s, określonych w STDIO.H.Jeśli str jest NULL, następnie tmpnam_s pozostawia wynik wewnętrznego buforu dla statycznych.Zatem wszelkie kolejne wywołania zniszczyć tej wartości.Nazwa wygenerowana przez tmpnam_s składa się z nazwy plików generowane przez program i, po pierwsze wywołanie tmpnam_s, rozszerzenie pliku numerów sekwencyjnych w podstawowej 32 (gdy.1-.1vvvvvu, TMP_MAX_S w STDIO.H-INT_MAX).
tmpnam_sautomatycznie obsługuje argumentów łańcuch znaków wielobajtowych, odpowiednio, uznając sekwencje znaków wielobajtowych, zgodnie z strona kodowa OEM, otrzymane z systemu operacyjnego._wtmpnam_sjest to wersja szerokich znaków tmpnam_s; wartość argumentów i _wtmpnam_s są ciągami szerokich znaków._wtmpnam_si tmpnam_s zachowują się identycznie, z wyjątkiem _wtmpnam_s nie obsługuje ciągów znaków wielobajtowych.
W języku C++ korzystając z tych funkcji jest uproszczona poprzez overloads szablonu; overloads można wywnioskować strony długość buforu automatycznie, eliminując konieczność należy określić argument rozmiar.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rutynowe H |
_UNICODE & Nie zdefiniowano _MBCS |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_ttmpnam_s |
tmpnam_s |
tmpnam_s |
_wtmpnam_s |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
tmpnam_s |
<stdio.h> |
_wtmpnam_s |
<stdio.h> lub <wchar.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
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 );
}
}
}
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.