Partager via


tmpnam_s, _wtmpnam_s

Génére des noms que vous pouvez utiliser pour créer des fichiers temporaires. Il s'agit de versions de hs3e7355(v=vs.120).mdFonctionnalités de sécurité dans le CRT.

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

Paramètres

  • [out] str
    Pointeur qui contiendra le nom généré.

  • [in] sizeInChars
    La taille en nombre de caractères de la mémoire tampon.

Valeur de retour

Ces deux fonctions retournent 0 en cas de réussite ou un numéro d'erreur en cas de échec.

Conditions d'erreur

str

sizeInChars

Valeur de retour

Contenu destr

NULL

any

EINVAL

non modifié

Non NULL (pointe vers de la mémoire valide)

trop court

ERANGE

non modifié

Si str est NULL, le gestionnaire de paramètres non valides est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions définissent errno à la valeur EINVAL et retournent EINVAL.

Notes

Chacune de ces fonctions retourne le nom d'un fichier qui n'existe pas. tmpnam_s retourne un nom unique dans le répertoire de travail actuel. Notez que lorsqu'un nom de fichier est ajouté au début avec une barre oblique inverse et sans informations de chemin d'accès, par exempl comme \fname21, cela indique que le nom est valide pour le répertoire de travail actuel.

Pour tmpnam_s, vous pouvez stocker le nom de fichier généré dans str. La longueur maximale d'une chaîne retournée par tmpnam_s est L_tmpnam_s, défini dans. STDIO.H. Si str est NULL, alors tmpnam_s laisse le résultat dans un tampon interne statique. Par conséquent tout appel à cette meme fonction par la suite détruit cette valeur Le nom généré par tmpnam_s se compose d'un nom de fichier programme généré et, après le premier appel à tmpnam_s, d'une extension de fichier composée des numéros séquentiels en base 32 (.1-.1vvvvvu, lorsque TMP_MAX_S dans STDIO.H est INT_MAX).

tmpnam_s gère automatiquement les arguments de chaîne de caractères multi-octets comme approprié, identifiant des séquences de caractères multioctets selon la page de codes OEM extraite du système d'exploitation. _wtmpnam_s est une version caractères larges de tmpnam_s; l'argument et la valeur de retour de _wtmpnam_s sont des chaînes de caractères larges. _wtmpnam_s et tmpnam_s se comportent de la même manière que _wtmpnam_s mais ne gèrent pas les chaînes de caractères multi-octets.

En C++, l'utilisation de ces fonctions est simplifiée par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement, en éliminant le besoin de spécifier un argument de taille. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_MBCS défini

_UNICODE défini

_ttmpnam_s

tmpnam_s

tmpnam_s

_wtmpnam_s

Configuration requise

Routine

En-tête requis

tmpnam_s

<stdio.h>

_wtmpnam_s

<stdio.h> ou <wchar.h>

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

Exemple

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

Équivalent .NET Framework

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

Voir aussi

Référence

E/S de flux

_getmbcp

malloc

_setmbcp

tmpfile_s