_tempnam, _wtempnam, tmpnam, _wtmpnam
Generuj nazwy można używać do tworzenia plików tymczasowych.Bardziej bezpieczne wersje niektórych z tych funkcji są dostępne w 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 imiona zwrócony przez _tempnam.dir
Ścieżka używane w nazwie pliku, jeśli nie ma żadnych zmienna środowiskowa TMP, lub jeśli TMP, nie jest prawidłowy katalog.str
Wskaźnik, który będzie posiadać generowanej nazwie i będzie taka sama jak nazwa zwracaną przez funkcję.Jest to wygodny sposób zapisać generowanej nazwie.
Wartość zwracana
Każda z tych funkcji zwraca wskaźnik do Nazwa wygenerowana lub NULL w przypadku awarii.Błąd może wystąpić, jeśli nastąpi próba więcej niż TMP_MAX (patrz STDIO.H) wzywa z tmpnam lub jeśli używasz _tempnam i ma nieprawidłowej nazwy katalogu określonym w zmiennej środowiskowej TMP i w dir parametru.
[!UWAGA]
Wskaźniki zwracane przez tmpnam i _wtmpnam wskaż bufory wewnętrzne statyczne.wolna nie należy wywoływać należy cofnąć te wskaźniki.freemusi być wywołana dla wskaźników przydzielony 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żąca.Należy zauważyć, że kiedy 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łowy 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 wyniku w wewnętrzny bufor statyczne.Tym samym wszelkie kolejne wywołania zniszczenia tej wartości.Nazwa wygenerowana przez tmpnam składa się z nazwy pliku generowanych przez program, a po pierwsze wywołanie funkcji tmpnam, rozszerzenie pliku kolejne numery w podstawowej 32 (gdy.1-.vvu, TMP_MAX w STDIO.H jest 32 767).
_tempnamSpowoduje to wygenerowanie nazwę pliku dla katalogu wybrane przez następujące zasady:
Jeśli zmienna środowiskowa TMP jest zdefiniowane i ustawiona na prawidłową nazwą katalogu, unikatowe nazwy plików będą generowane dla katalogu określonego przez TMP.
Jeśli zmienna środowiskowa TMP nie jest zdefiniowany lub jest ustawiona na nazwę katalogu, który nie istnieje, _tempnam użyje dir parametr jako ścieżka, dla którego będzie generować unikatowe nazwy.
Jeśli nie jest zdefiniowana zmienna środowiskowa TMP lub jeśli jest ustawiona na nazwę katalogu, który nie istnieje, a 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śli oba TMP i dir określić nazwy katalogów, które nie istnieją, _tempnam wywołanie funkcji zakończy się niepowodzeniem.
Nazwy zwracane przez _tempnam będzie składa się z prefix i kolejny numer, który będzie łączyć utworzyć unikatową nazwę pliku dla określonego katalogu._tempnamgeneruje nazwy plików, które mają bez rozszerzenia._tempnamużywa malloc przydzielić miejsca dla nazwy pliku; program jest odpowiedzialny za zwolnienie to miejsce, gdy nie jest już potrzebne.
_tempnami tmpnam uchwyt ciąg znaków wielobajtowych argumentów w stosownych przypadkach, uznając sekwencje znaków wielobajtowych zgodnie ze strony kodowej OEM uzyskiwane automatycznie z systemu operacyjnego._wtempnamjest to wersja szeroko charakter _tempnam; argumenty i wartości zwracanej przez _wtempnam są ciągi znaków wide._wtempnami _tempnam zachowują się identycznie, chyba że _wtempnam nie obsługuje ciągów znaków wielobajtowych._wtmpnamjest to wersja szeroko charakter tmpnam; wartość argumentów i _wtmpnam są ciągi znaków wide._wtmpnami tmpnam zachowują się identycznie, chyba że _wtmpnam nie obsługuje ciągów znaków wielobajtowych.
Jeśli _DEBUG i _CRTDBG_MAP_ALLOC są zdefiniowane, _tempnam i _wtempnam są zastępowane przez wywołania _tempnam_dbg i _wtempnam_dbg.
Rutynowe mapowania zwykłego tekstu
Procedura Tchar.h |
_UNICODE & _MBCS nie zdefiniowano |
_MBCS zdefiniowano |
_UNICODE zdefiniowany |
---|---|---|---|
_ttmpnam |
tmpnam |
tmpnam |
_wtmpnam |
_ttempnam |
_tempnam |
_tempnam |
_wtempnam |
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
_tempnam |
<stdio.h> |
_wtempnam, _wtmpnam |
<stdio.h> lub <wchar.h> |
tmpnam |
<stdio.h> |
Dodatkowe informacje o zgodności – zobacz: Zgodność 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ć standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywoływania platformy.