Udostępnij za pośrednictwem


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.

Zobacz też

Informacje

We/Wy strumienia

_getmbcp

malloc

_setmbcp

tmpfile_s