Freigeben über


tmpnam_s, _wtmpnam_s

Generieren Sie Namen, die Sie verwenden können, um temporäre Dateien zu erstellen. Diese Versionen sind von tmpnam und _wtmpnam mit werden, wie in Sicherheitsfunktionen in der CRT beschrieben.

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

Contents of str

NULL

any

EINVAL

nicht geändert

nicht NULL (Punkte zum gültigen Arbeitsspeicher)

zu kurz

ERANGE

nicht geändert

Wenn str den Wert NULL annimmt, wird der ungültige Parameterhandler, wie in Parametervalidierung beschrieben, aufgerufen. Wenn die weitere Ausführung zugelassen wird, stellen diese Funktionen errno auf EINVAL ein und geben EINVAL zurück.

Hinweise

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

Für tmpnam_s können Sie diesen erzeugten Dateinamen im str speichern. Die maximale Länge einer Zeichenfolge, die von tmpnam_s zurückgegeben wird, ist L_tmpnam_s, die in STDIO.H. Wenn strNULL ist, dann bleibt tmpnam_s das Ergebnis in einem internen statischen Puffer. So zerstören alle nachfolgenden Aufrufe diesen Wert. Der Name, der von tmpnam_s generiert wurde, besteht aus einem Programm-generierten Dateinamen, und nach dem ersten Aufruf von tmpnam_s aus, eine Dateierweiterung von sequenziellen Zahlen in Basis 32 (.1-.1vvvvvu, wenn TMP_MAX_S in STDIO.H INT_MAX ist).

tmpnam_s behandelt automatisch Mehrbyte-Zeichenfolgen-Argumente entsprechend und erkennt Mehrbytezeichensequenzen entsprechend der OEM-Codepage, die vom Betriebssystem abgerufen wird. _wtmpnam_s ist eine Breitzeichenversion von tmpnam_s. Das Argument und der Rückgabewert von _wtmpnam_s sind Zeichenfolgen mit Breitzeichen. _wtmpnam_s und tmpnam_s identisch verhalten sich, dass _wtmpnam_s nicht behandelt Mehrbyte-Zeichenfolgen.

Die Verwendung dieser Funktionen in C++ wird durch Überladungen (als Vorlagen vorhanden) vereinfacht. Überladungen können automatisch die Pufferlänge ableiten, sodass kein Größenargument angegeben werden muss. Weitere Informationen finden Sie unter Sichere Vorlagenüberladungen.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

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

Zusätzliche Informationen zur Kompatibilität 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. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Stream-E/A

_getmbcp

malloc

_setmbcp

tmpfile_s