_tempnam, _wtempnam, tmpnam, _wtmpnam
Generuj nazwy, których można użyć, aby utworzyć pliki tymczasowe.Niektóre z tych funkcji bezpieczniejsze wersje są dostępne; 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
Ciąg, który będzie pre oczekującego na nazwy zwracane przez _tempnam.dir
Ścieżka, używane w polu Nazwa pliku, jeśli zmienna środowiskowa nie TMP lub TMP, nie jest prawidłowy katalog.str
Wskaźnik, który będzie zawierać generowanej nazwie i będzie taka sama jak nazwa, zwróconych przez funkcję.Jest to wygodny sposób zapisać wygenerowany nazwy.
Wartość zwracana
Każda z tych funkcji zwraca wskaźnik do Nazwa wygenerowana lub NULL , jeśli wystąpi awaria.Błąd może wystąpić, jeśli nastąpi próba więcej niż TMP_MAX (patrz STDIO.H) połączeń z tmpnam lub jeśli używany jest _tempnami nieprawidłowej nazwy katalogu określonego w zmiennej środowiskowej TMP i w dir parametru.
[!UWAGA]
Wskaźniki, zwrócony przez tmpnam i _wtmpnam wskaż bufory wewnętrzne statyczne.wolna nie zostanie wywołany, którego przydział należy cofnąć tych wskaźników.freemusi być wywoływana dla wskaźników przydzielone przez _tempnam i _wtempnam.
Uwagi
Każda z tych funkcji zwraca nazwę pliku, który obecnie nie istnieje.tmpnamZwraca nazwę unikatową w bieżącym katalogu roboczym i _tempnam pozwala generować unikatową nazwę w katalogu innym niż bieżący.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, można przechowywać ten generowanej nazwy pliku w str.Jeśli str jest NULL, następnie tmpnam pozostawia wynik wewnętrznego buforu dla statycznych.Zatem wszelkie kolejne wywołania zniszczyć tej wartości.Nazwa wygenerowana przez tmpnam składa się z nazwy plików generowane przez program i, po pierwsze wywołanie tmpnam, rozszerzenie pliku numerów sekwencyjnych w podstawowej 32 (gdy.1-.vvu, TMP_MAX w STDIO.H wynosi 32 767).
_tempnambędzie generować unikatową nazwę pliku dla katalogu, wybrany przez następujące zasady:
Jeśli zmienna środowiskowa TMP jest zdefiniowana i ustawić prawidłową nazwę katalogu, unikatowe nazwy plików zostanie wygenerowany w katalogu określonym przez TMP.
Jeśli nie jest zdefiniowana zmienna środowiskowa TMP, lub jeśli ustawiono nazwę katalogu, który nie istnieje, _tempnam będzie używać dir parametr jako ścieżka, dla którego będzie generować unikatowe nazwy.
Jeśli nie jest zdefiniowana zmienna środowiskowa TMP lub jeśli ustawiono nazwę katalogu, który nie istnieje i jeśli dir jest albo NULL lub ustaw nazwę katalogu, który nie istnieje, _tempnam użyje bieżącego katalogu roboczego do generowania unikatowych nazw.Obecnie jeżeli zarówno TMP i dir określić nazwy katalogów, które nie istnieją, _tempnam wywołanie funkcji zakończy się niepowodzeniem.
Nazwa, zwrócony przez _tempnam będą złączania z prefix i kolejny numer, który będzie łączyć utworzyć unikatowej nazwy pliku dla określonego katalogu._tempnamgeneruje nazwy plików, które mają bez rozszerzenia._tempnamużywa malloc do przydzielania miejsca dla nazwy pliku; program jest odpowiedzialny za zwalniania miejsca na tym, kiedy jest już potrzebne.
_tempnami tmpnam automatycznie uchwyt łańcuch znaków wielobajtowych, argumenty w stosownych przypadkach, uznając sekwencje znaków wielobajtowych, zgodnie z strona kodowa OEM uzyskane z systemu operacyjnego._wtempnamjest to wersja szerokich znaków _tempnam; argumenty i wartość zwracaną przez _wtempnam są ciągami szerokich znaków._wtempnami _tempnam zachowują się identycznie, z wyjątkiem _wtempnam nie obsługuje ciągów znaków wielobajtowych._wtmpnamjest to wersja szerokich znaków tmpnam; wartość argumentów i _wtmpnam są ciągami szerokich znaków._wtmpnami tmpnam zachowują się identycznie, z wyjątkiem _wtmpnam nie obsługuje ciągów znaków wielobajtowych.
Jeśli _DEBUG i _CRTDBG_MAP_ALLOC są zdefiniowane, _tempnam i _wtempnam zastępuje się przez wywołania _tempnam_dbg i _wtempnam_dbg.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rutynowe H |
_UNICODE & Nie zdefiniowano _MBCS |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_ttmpnam |
tmpnam |
tmpnam |
_wtmpnam |
_ttempnam |
_tempnam |
_tempnam |
_wtempnam |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_tempnam |
<stdio.h> |
_wtempnam, _wtmpnam |
<stdio.h> lub <wchar.h> |
tmpnam |
<stdio.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// 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);
}
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.