Share via


_tempnam, _wtempnam, tmpnam, _wtmpnam

Générez les noms que vous pouvez utiliser pour créer des fichiers temporaires.Plus les versions sécurisées à certaines de ces fonctions sont disponibles ; consultez 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 
);

Paramètres

  • prefix
    La chaîne qui sera ajoutée au début aux noms retournée par _tempnam.

  • dir
    Le chemin d'accès utilisé dans le nom de fichier s'il n'existe aucune variable d'environnement TMP, ou si TMP n'est pas un répertoire non valide.

  • str
    Pointeur qui contiendra le nom généré et sera identique au nom retourné par la fonction.C'est un moyen pratique d'enregistrer le nom généré.

Valeur de retour

Chacune de ces fonctions retourne un pointeur vers le nom généré ou à NULL s'il existe un échec.L'échec peut se produire si vous essayez plus qu' TMP_MAX (voir STDIO.H) les appels avec tmpnam ou si vous utilisez _tempnamet un nom de répertoire non spécifié dans la variable d'environnement TMP et dans le paramètre d' dir .

[!REMARQUE]

Les pointeurs retournés par tmpnam et le point d' _wtmpnam aux mémoires tampons statiques internes.libre ne doit pas être appelé pour libérer ces pointeurs.free doit être appelée pour les pointeurs alloués par _tempnam et _wtempnam.

Notes

Chacune de ces fonctions retourne le nom d'un fichier qui n'existe pas actuellement.tmpnam retourne un nom unique dans le répertoire de travail actuel et _tempnam vous permet de créer un nom unique dans un répertoire autre que celui en cours.Remarque que lorsqu'un nom de fichier est ajouté au début par une barre oblique inverse et aucune information de chemin d'accès, telle que \ fname21, cela indique que le nom est valide pour le répertoire de travail actuel.

Pour tmpnam, vous pouvez stocker ce nom de fichier généré dans str.si str est NULL, alors tmpnam laisse le résultat dans un tampon statique interne.Donc tous les appels suivants destroy cette valeur.Le nom généré par tmpnam se compose d'un nom de fichier programme-généré et, après le premier appel à tmpnam, d'une extension de fichier des numéros séquentiels dans la base 32 (.1-.vvu, lorsque TMP_MAX dans STDIO.H est 32.767).

_tempnam génère un nom de fichier unique pour un répertoire choisi par les règles suivantes :

  • Si la variable d'environnement TMP est définie et la valeur de répertoire non valide, à noms de fichiers uniques sont générés pour le répertoire spécifié par TMP.

  • Si la variable d'environnement TMP n'est pas définie ou si elles sont définies au nom d'un répertoire qui n'existe pas, _tempnam utilisera le paramètre d' dir comme étant le chemin d'accès pour lequel il génère des noms uniques.

  • Si la variable d'environnement TMP n'est pas définie ou si elles sont définies au nom d'un répertoire qui n'existe pas, et si dir est NULL ou affectez nom d'un répertoire qui n'existe pas, _tempnam utilise le répertoire de travail actuel pour générer des noms uniques.Actuellement, si TMP et dir spécifient des noms de répertoires qui n'existent pas, l'appel de fonction d' _tempnam échouera.

Le nom retourné par _tempnam sera une concaténation d' prefix et un numéro séquentiel, qui mixera pour créer un nom de fichier unique pour le répertoire spécifié._tempnam génère des noms de fichiers qui n'ont aucune extension._tempnam utilise malloc pour allouer de l'espace pour le nom de fichier ; le programme est chargé de libérer cet espace s'il n'est plus nécessaire.

_tempnam et tmpnam gèrent automatiquement les arguments de chaîne de caractères multioctets comme approprié, l'identification des séquences de caractères multioctets d'après la page de codes OEM obtenue du système d'exploitation._wtempnam est une version à caractère élargi d' _tempnam; les arguments et la valeur de retour d' _wtempnam sont des chaînes à caractères larges._wtempnam et _tempnam se comportent de la même façon qu'il _wtempnam ne gère pas les chaînes de caractères multioctets._wtmpnam est une version à caractère élargi d' tmpnam; l'argument et que la valeur de retour d' _wtmpnam sont des chaînes à caractères larges._wtmpnam et tmpnam se comportent de la même façon qu'il _wtmpnam ne gère pas les chaînes de caractères multioctets.

Si _DEBUG et _CRTDBG_MAP_ALLOC sont définis, _tempnam et _wtempnam sont remplacés par les appels à _tempnam_dbg et _wtempnam_dbg.

mappages de routines de texte générique

routine de TCHAR.H

_MBCS & de _UNICODE non défini

_MBCS défini

_UNICODE défini

_ttmpnam

tmpnam

tmpnam

_wtmpnam

_ttempnam

_tempnam

_tempnam

_wtempnam

Configuration requise

routine

en-tête requis

_tempnam

<stdio.h>

_wtempnam, _wtmpnam

<stdio.h> ou <wchar.h>

tmpnam

<stdio.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Exemple

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

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

E/S de flux

_getmbcp

malloc

_setmbcp

tmpfile

tmpfile_s