Udostępnij za pośrednictwem


_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.

Zobacz też

Informacje

Strumień we/wy

_getmbcp

funkcja malloc

_setmbcp

tmpfile

tmpfile_s