Share via


tmpnam_s, _wtmpnam_s

Generieren von Namen, die Sie verwenden können, um temporäre Dateien erstellt werden soll.Dies sind Versionen von tmpnam und _wtmpnam mit beschrieben, wie unter Security Enhancements in Sicherheitsfeatures im 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

Parameter

  • [out] str
    Zeiger, der den generierten Namen enthält.

  • [in] sizeInChars
    Die Größe des Puffers in Zeichen.

Rückgabewert

Beide Funktionen geben 0 zurück, wenn erfolgreich oder eine Fehlernummer auf Fehler.

Fehlerbedingungen

str

sizeInChars

Rückgabewert

Inhalt str

NULL

alle

EINVAL

nicht geändert

Punkte ( NULL nicht an den gültigen Arbeitsspeicher)

kurz zu

ERANGE

nicht geändert

Wenn strNULLungültige Parameter ist, wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung fortgesetzt werden kann, darf dieses Features zu errno festlegen EINVAL und geben EINVAL.

Hinweise

Jede dieser Funktionen gibt den Namen der Datei zurück, die zur Zeit nicht vorhanden ist.tmpnam_s gibt einen Namen zurück, der im aktuellen Arbeitsverzeichnis eindeutig ist.Hinweis, als wenn ein Dateiname mit einem umgekehrten Schrägstrich und keine Pfadinformationen, z. B. \ fname21, diese vorangestellt wird, gibt an, dass der Name für das aktuelle Arbeitsverzeichnis gültig ist.

Für tmpnam_skönnen Sie diesen generierten Dateinamen in strspeichern.Die maximale Länge einer Zeichenfolge, die von tmpnam_s zurückgegeben wird, ist L_tmpnam_s, definiert in STDIO.H.Wenn strNULList, lässt tmpnam_s das Ergebnis in einem internen statischen Puffers.Daher zerstören alle nachfolgenden Aufrufe diesen Wert.Der Name, der von tmpnam_s generiert wird, besteht ein Programm-generierten Dateinamen und nach dem ersten Aufruf von tmpnam_s, aus einer Dateierweiterung von sequenziellen Zahlen in Basis 32 (.1-.1vvvvvu, wenn TMP_MAX_S in STDIO.H INT_MAX ist).

tmpnam_s behandelt automatisch erkannt und bei Bedarf Mehrbyte-Zeichenfolgen-Argumente Mehrbytezeichen, die Sequenzen anhand der OEM-Codepage des Betriebssystems abgerufene._wtmpnam_s ist eine Breitzeichen-Version von tmpnam_s. das Argument und der Rückgabewert von _wtmpnam_s sind Zeichenfolgen mit Breitzeichen._wtmpnam_s und tmpnam_s verhalten sich identisch, mit der Ausnahme, dass nicht behandelte _wtmpnam_s Mehrbyte-Zeichenfolgen.

In C++ unter Verwendung dieser Funktionen wird von Vorlagen Operatoren vereinfacht. Überladungen können die Pufferlänge automatisch ableiten und die Notwendigkeit mehr, ein Größen - Argument angegeben wird.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.

Zuweisung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definieren

_UNICODE definiert

_ttmpnam_s

tmpnam_s

tmpnam_s

_wtmpnam_s

Anforderungen

Routine

Erforderlicher Header

tmpnam_s

<stdio.h>

_wtmpnam_s

<stdio.h> oder <wchar.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

Beispiel

// 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 );
      }
   }  
}

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Stream E/A

_getmbcp

malloc

_setmbcp

tmpfile_s