_tempnam, _wtempnam, tmpnam, _wtmpnam

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

Génère des noms que vous pouvez utiliser pour créer des fichiers temporaires. Des versions plus sécurisées de certaines de ces fonctions sont disponibles. consultez la page 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
Chaîne qui sera ajoutée aux noms retournés par _tempnam.

dir
Chemin d’accès utilisé dans le nom de fichier en l’absence de variable d’environnement TMP ou si TMP n’est pas un répertoire valide.

str
Pointeur qui contiendra le nom généré et sera identique à celui retourné par la fonction. Il s’agit d’un moyen pratique d’enregistrer le nom généré.

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

System_CAPS_ICON_note.jpg Remarque

Les pointeurs retournés par tmpnam et _wtmpnam pointent vers les mémoires tampon internes statiques. gratuit ne doit pas être appelée pour libérer ces pointeurs. freedoit être appelée pour les pointeurs alloués par _tempnam et _wtempnam.

Chacune de ces fonctions retourne le nom d’un fichier qui n’existe pas. tmpnamRetourne un nom unique dans le répertoire de travail en cours et _tempnam vous permet de générer un nom unique dans un répertoire autre que celui en cours. Notez que lorsqu’un nom de fichier est ajouté avec une barre oblique inverse et aucune information de chemin d’accès, telles 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, puis tmpnam laisse le résultat dans un tampon interne statique. Par conséquent, tous les appels suivants détruire cette valeur. Le nom généré par tmpnam se compose d’un nom de fichier généré par le programme et, après le premier appel à tmpnam, une extension de fichier des numéros séquentiels dans base 32 (.1-.vvu, lorsque TMP_MAX dans STDIO. H est 32 767).

_tempnamgénère un nom unique pour un répertoire choisi par les règles suivantes :

  • Si la variable d’environnement TMP est définie et un nom de répertoire valide, les noms de fichier unique 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 elle est définie sur le nom d’un répertoire qui n’existe pas, _tempnam utilisera le dir paramètre en tant que 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 elle est définie sur le nom d’un répertoire qui n’existe pas et si dir est NULL ou le nom d’un répertoire qui n’existe pas, la valeur _tempnam utilise le répertoire de travail pour générer des noms uniques. Actuellement, si les deux TMP et dir spécifier des noms de répertoires qui n’existent pas, le _tempnam appel de fonction échouera.

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

_tempnamet tmpnam obtient automatiquement handle arguments de chaîne de caractères multioctets selon le cas, en identifiant les séquences de caractères multioctets en fonction de la page de codes OEM du système d’exploitation. _wtempnamest une version à caractère élargi de _tempnam; les arguments et la valeur de retour de _wtempnam sont des chaînes à caractères larges. _wtempnamet _tempnam se comportent de façon identique, sauf que _wtempnam ne gère pas les chaînes de caractères multioctets. _wtmpnam est une version à caractères larges de tmpnam ; l'argument et la valeur de retour de _wtmpnam sont des chaînes à caractères larges. _wtmpnamet tmpnam se comportent de façon identique, sauf que _wtmpnam ne gère pas les chaînes de caractères multioctets.

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

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _MBCS non définis_MBCS défini_UNICODE défini
_ttmpnamtmpnamtmpnam_wtmpnam
_ttempnam_tempnam_tempnam_wtempnam
RoutineEn-tête requis
_tempnam<stdio.h>
_wtempnam, _wtmpnam<stdio.h> ou <wchar.h>
tmpnam<stdio.h>

Pour plus d'informations sur la compatibilité, voir Compatibilité dans l'introduction.

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

\s1gk. is safe to use as a temporary file.  
C:\DOCUME~1\user\LOCALS~1\Temp\2\stq2 is safe to use as a temporary file.  

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez Exemples d'appel de plateforme.

Flux d’e/s
_getmbcp
malloc
_setmbcp
tmpfile
tmpfile_s

Afficher: