_tempnam, _wtempnam, tmpnam, _wtmpnam

Generieren von Namen, die Sie verwenden können, um temporäre Dateien erstellt werden soll.Sicherere Versionen einiger dieser Funktionen sind verfügbar. Weitere Informationen finden Sie unter 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 
);

Parameter

  • prefix
    Die Zeichenfolge, die den Namen vorangestellt wird, die durch _tempnamzurück.

  • dir
    Der Pfad wird in Dateinamen einschließen, wenn keine TMP-Umgebungsvariable vorhanden sind oder wenn TMP kein gültiges Verzeichnis befindet.

  • str
    Zeiger, der den generierten Namen besitzt und den Namen identisch ist, der von der Funktion zurückgegeben wird.Dies ist eine einfache Möglichkeit, den generierten Namen zu speichern.

Rückgabewert

Jede dieser Funktionen gibt einen Zeiger auf den generierten Namen oder NULL zurück, wenn ein Fehler auftritt.Fehler kann, wenn Sie versuchen, mehr als TMP_MAX auftreten (siehe STDIO.H) Aufrufe mit tmpnam oder wenn Sie _tempnamverwenden und dort ist ein ungültiger Verzeichnisname, der in der TMP-Umgebungsvariablen und im dir-Parameter angegeben wird.

HinweisHinweis

Der Zeiger, die von tmpnam und _wtmpnam zurückgegeben werden, zeigen auf den internen Puffer statischen.frei sollte erst aufgerufen werden, um die Zeiger freigegeben werden sollen.Für die Zeiger mussfree aufgerufen werden, die von _tempnam und _wtempnamzugeordnet sind.

Hinweise

Jede dieser Funktionen gibt den Namen der Datei zurück, die zur Zeit nicht vorhanden ist.tmpnam gibt einen Namen zurück, der im aktuellen Arbeitsverzeichnis eindeutig ist und _tempnam können Sie einen eindeutigen Namen in einem anderen Verzeichnis als das aktuelle generieren.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 tmpnamkönnen Sie diesen generierten Dateinamen in strspeichern.Wenn strNULList, lässt tmpnam das Ergebnis in einem internen statischen Puffers.Daher zerstören alle nachfolgenden Aufrufe diesen Wert.Der Name, der von tmpnam generiert wird, besteht ein Programm-generierten Dateinamen und nach dem ersten Aufruf von tmpnam, aus einer Dateierweiterung von sequenziellen Zahlen in Basis 32 (.1-.vvu, wenn TMP_MAX in STDIO.H 32,767).

_tempnam generiert einen eindeutigen Dateinamen für ein Verzeichnis, das durch die folgenden Regeln ausgewählt ist:

  • Wenn der TMP-Umgebungsvariablen auf einen gültigen Verzeichnisnamen definiert und festgelegt ist, werden eindeutige Dateinamen für das Verzeichnis generiert, das von TMP angegeben wird.

  • Wenn die TMP-Umgebungsvariable nicht definiert ist, oder wenn es auf den Namen eines Verzeichnisses festgelegt wird, das nicht vorhanden ist, wird _tempnam den dir-Parameter als Pfad, für den er eindeutige Namen generiert.

  • Wenn die TMP-Umgebungsvariable nicht definiert ist, oder wenn er dem Namen eines Verzeichnisses festgelegt wird, das nicht vorhanden ist, und wenn entweder dir oder legt diese fest NULL auf den Namen eines Verzeichnisses ist, das nicht vorhanden ist, wird _tempnam das aktuelle Arbeitsverzeichnis, um eindeutige Namen zu generieren.Derzeit und TMP, wenn dir Namen der Verzeichnisse angeben, die nicht vorhanden sind, schlägt der _tempnam-Funktionsaufruf aus.

Der Name, der von _tempnam zurückgegeben wird, ist eine Verkettung aus prefix und sequenzielle Zahl kombiniert, um einen eindeutigen Dateinamen für das angegebene Verzeichnis zu erstellen._tempnam generierten Dateinamen ohne Erweiterung haben._tempnam verwendet malloc , um Platz für den Dateinamen zuzuordnen. Das Programm ist für die Freigabe dieses Platzes zuständig, wenn diese nicht mehr benötigt wird.

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

Wenn _DEBUG und _CRTDBG_MAP_ALLOC definiert sind, werden _tempnam und _wtempnam durch Aufrufe von _tempnam_dbg und _wtempnam_dbgersetzt.

Zuweisung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definieren

_UNICODE definiert

_ttmpnam

tmpnam

tmpnam

_wtmpnam

_ttempnam

_tempnam

_tempnam

_wtempnam

Anforderungen

Routine

Erforderlicher Header

_tempnam

<stdio.h>

_wtempnam, _wtmpnam

<stdio.h> oder <wchar.h>

tmpnam

<stdio.h>

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

Beispiel

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

.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

tmpfile_s