_tempnam, _wtempnam, tmpnam, _wtmpnam

Generare nomi che è possibile utilizzare per creare i file temporanei.Più versioni sicure di alcune di queste funzioni sono disponibili, vedere 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 
);

Parametri

  • prefix
    La stringa che verrà generale ai nomi ha restituito da _tempnam.

  • dir
    Il percorso utilizzato nel nome file se non c " è variabile di ambiente TMP, o se TMP non è una directory valida.

  • str
    Puntatore che utilizzerà il nome generato e sarà identico al nome restituito dalla funzione.Si tratta di un modo pratico per salvare il nome generato.

Valore restituito

Ognuna di queste funzioni restituisce un puntatore al nome generato o NULL se c " è un errore.L'errore può verificarsi se si tenta di più TMP_MAX (vedere STDIO.H) chiama con tmpnam oppure se si _tempnamed esiste un nome di directory non valido specificato nella variabile di ambiente TMP e in dir parametro.

[!NOTA]

I puntatori restituiti da tmpnam e _wtmpnam punto nel buffer statici interni.libero non deve essere chiamato per rilasciare tali puntatori.free deve essere chiamato per i puntatori allocati da _tempnam e _wtempnam.

Note

Ognuna di queste funzioni restituisce il nome di un file correntemente non esiste.tmpnam restituisce un nome univoco nella cartella di lavoro corrente e _tempnam consente di generare un nome univoco in una directory diversa da quella corrente.È importante notare che quando un nome file è in generale con una barra rovesciata e senza informazioni sul percorso, come \ fname21, significa che il nome è valido per la cartella di lavoro corrente.

per tmpnam, è possibile archiviare questo nome file generato in str.se str viene NULL, quindi tmpnam consente al risultato in un buffer statico interno.Pertanto tutte le chiamate successive elimina questo valore.Il nome generato da tmpnam è costituito da un nome file programma-generato e, dopo la prima chiamata a tmpnam, un'estensione di file dei numeri sequenziali in base 32 (.1-.vvu, quando TMP_MAX in STDIO.H viene 32.767).

_tempnam genera un nome file univoco per una directory scelta in base alle seguenti regole:

  • Se la variabile di ambiente TMP è definita e stabilita a un nome di directory valido, i nomi file univoci verranno generati per la directory specificata da TMP.

  • Se la variabile di ambiente TMP non definita o se è impostato sul nome di una directory che non esiste, _tempnam utilizzerà dir parametro come percorso per il quale verranno generati i nomi univoci.

  • Se la variabile di ambiente TMP non definita o se è impostata sul nome di una directory che non esiste e se dir è uno NULL o impostare il nome di una directory che non esiste, _tempnam utilizzerà la cartella di lavoro corrente per generare nomi univoci.Attualmente, se fosse TMP che dir specificare i nomi delle directory che non esiste, _tempnam la chiamata di funzione non riuscirà.

Il nome restituito da _tempnam essere una concatenazione di prefix e un numero sequenziale, che è combinerà per creare un nome file univoco per la directory specificata._tempnam genera i nomi file con estensione._tempnam utilizzo report per allocare spazio per il nome file, il programma è responsabile della versione di tale spazio quando non è più necessario.

_tempnam e tmpnam automaticamente gestire gli argomenti della stringa con caratteri multibyte in base alle proprie esigenze, riconoscere le sequenze di caratteri multibyte in base alla tabella codici OEM ottenuta dal sistema operativo._wtempnam è una versione a caratteri estesi di _tempnam; gli argomenti e il valore restituito di _wtempnam sono le stringhe di caratteri estesi._wtempnam e _tempnam comportano in modo identico con la differenza che _wtempnam non gestisce le stringhe di caratteri multibyte._wtmpnam è una versione a caratteri estesi di tmpnam; l'argomento e il valore restituito di _wtmpnam sono le stringhe di caratteri estesi._wtmpnam e tmpnam comportano in modo identico con la differenza che _wtmpnam non gestisce le stringhe di caratteri multibyte.

se _DEBUG e _CRTDBG_MAP_ALLOC essere definito, _tempnam e _wtempnam vengono sostituiti dalle chiamate a _tempnam_dbg e _wtempnam_dbg.

Mapping di routine a testo generico

routine di TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_ttmpnam

tmpnam

tmpnam

_wtmpnam

_ttempnam

_tempnam

_tempnam

_wtempnam

Requisiti

routine

Intestazione di associazione

_tempnam

<stdio.h>

_wtempnam, _wtmpnam

<stdio.h> o <wchar.h>

tmpnam

<stdio.h>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Esempio

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

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.

Vedere anche

Riferimenti

Flusso I/O

_getmbcp

malloc

_setmbcp

tmpfile

tmpfile_s