tmpnam_s, _wtmpnam_s
Générez les noms que vous pouvez utiliser pour créer des fichiers temporaires.Ce sont des versions de tmpnam et _wtmpnam avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du 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 de la mémoire tampon de caractères.
Valeur de retour
Ces deux fonctions retournent 0 si l'opération a réussi ou un numéro d'erreur en cas de échec.
conditions d'erreur
str |
sizeInChars |
Valeur de retour |
contenu de str |
NULL |
quels |
EINVAL |
non modifié |
pas NULL (pointe vers une mémoire non valide) |
trop court |
ERANGE |
non modifié |
si str est NULL, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces errno défini par fonctions à EINVAL et à EINVALde retour.
Notes
Chacune de ces fonctions retourne le nom d'un fichier qui n'existe pas actuellement.tmpnam_s retourne un nom unique dans le répertoire de travail actuel.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_s, vous pouvez stocker ce 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 statique interne.Donc tous les appels suivants destroy 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 des numéros séquentiels dans la 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 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._wtmpnam_s est une version à caractère élargi d' tmpnam_s; l'argument et que la valeur de retour d' _wtmpnam_s sont des chaînes à caractères larges._wtmpnam_s et tmpnam_s se comportent de la même façon qu'il _wtmpnam_s ne gère pas les chaînes de caractères multioctets.
En C++, à l'aide de ces fonctions est simplifié 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 Surcharges sécurisées de modèle.
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_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 des informations de compatibilité supplémentaires, 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 l' exemples d'appel de code non managé.