Udostępnij za pośrednictwem


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

Zobacz też

Informacje

We/Wy strumienia

_getmbcp

malloc

_setmbcp

tmpfile

tmpfile_s