Partager via


strerror_s, , _strerror_s_wcserror_s, ,__wcserror_s

Obtiennent un message d’erreur système (strerror_s, _wcserror_s) ou impriment un message d’erreur fourni par l’utilisateur (_strerror_s, __wcserror_s). Ces fonctions sont des versions de , , , _wcserror__wcserroravec des améliorations de sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT. _strerrorstrerror

Syntaxe

errno_t strerror_s(
   char *buffer,
   size_t sizeInBytes,
   int errnum
);
errno_t _strerror_s(
   char *buffer,
   size_t sizeInBytes,
   const char *strErrMsg
);
errno_t _wcserror_s(
   wchar_t *buffer,
   size_t sizeInWords,
   int errnum
);
errno_t __wcserror_s(
   wchar_t *buffer,
   size_t sizeInWords,
   const wchar_t *strErrMsg
);
template <size_t size>
errno_t strerror_s(
   char (&buffer)[size],
   int errnum
); // C++ only
template <size_t size>
errno_t _strerror_s(
   char (&buffer)[size],
   const char *strErrMsg
); // C++ only
template <size_t size>
errno_t _wcserror_s(
   wchar_t (&buffer)[size],
   int errnum
); // C++ only
template <size_t size>
errno_t __wcserror_s(
   wchar_t (&buffer)[size],
   const wchar_t *strErrMsg
); // C++ only

Paramètres

buffer
Mémoire tampon devant contenir la chaîne d’erreur.

sizeInBytes
Nombre d'octets dans la mémoire tampon.

sizeInWords
Nombre de mots dans la mémoire tampon.

errnum
Numéro d’erreur.

strErrMsg
Message fourni par l'utilisateur.

Valeur retournée

Zéro si l'opération a réussi, un code d'erreur en cas d'échec.

Conditions d’erreur

buffer sizeInBytes/sizeInWords strErrMsg Contenu de buffer
NULL n'importe laquelle n'importe laquelle n/a
n'importe laquelle 0 n'importe laquelle non modifié

Notes

La strerror_s fonction est thread-safe.

La fonction strerror_s mappe errnum à une chaîne de message d’erreur, retournant la chaîne contenue dans buffer. _strerror_s ne prend pas le numéro d’erreur ; elle utilise la valeur actuelle de errno pour déterminer le message approprié. Le message n’est pas imprimé ou affiché par strerror_s ou _strerror_s. Pour générer le message, vous devez appeler une fonction de sortie telle que fprintf:

if (( _access( "datafile",2 )) == -1 )
{
   _strerror_s(buffer, 80, NULL);
   fprintf( stderr, buffer );
}

Si strErrMsg c’est NULLle cas, _strerror_s retourne une chaîne dans buffer laquelle contient le message d’erreur système pour le dernier appel de bibliothèque qui a généré une erreur. Si strErrMsg ce n’est pas le NULLcas, _strerror_s retourne une chaîne dans buffer laquelle contient (dans l’ordre) votre message de chaîne, un signe deux-points, un espace, le message d’erreur système pour le dernier appel de bibliothèque qui a généré une erreur. La longueur maximale de votre message de type chaîne est de 94 caractères.

Ces fonctions tronquent le message d’erreur si sa longueur dépasse la taille de la mémoire tampon - 1. La chaîne obtenue dans buffer se termine toujours par un caractère null.

Le numéro d’erreur réel pour _strerror_s lequel il est stocké dans la variable errno. Les messages d’erreur système sont accessibles via la variable _sys_errlist, qui est un tableau de messages classés par numéro d’erreur. _strerror_s accède au message d’erreur approprié en utilisant la valeur errno comme index de la variable _sys_errlist. La valeur de la variable _sys_nerr est définie comme le nombre maximal d’éléments dans le _sys_errlist tableau. Pour produire des résultats précis, appelez _strerror_s immédiatement après un retour de routine de bibliothèque avec une erreur. Sinon, les appels suivants à strerror_s ou _strerror_s peuvent remplacer la valeur errno.

_wcserror_s et __wcserror_s sont, respectivement, des versions à caractères larges de strerror_s et _strerror_s.

Ces fonctions valident leurs paramètres. Si la mémoire tampon est NULL ou si le paramètre de taille est 0, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à se poursuivre, les fonctions retournent EINVAL et affectent à errno la valeur EINVAL.

_strerror_s, _wcserror_set __wcserror_s ne font pas partie de la définition ANSI, mais sont plutôt des extensions Microsoft. Ne les utilisez pas là où la portabilité est souhaitée ; pour la compatibilité ANSI, utilisez strerror_s à la place.

En C++, l’utilisation de ces fonctions est simplifiée par les surcharges de modèle ; les surcharges peuvent déduire automatiquement la longueur de la mémoire tampon, ce qui évite d’avoir à spécifier un argument de taille. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Les versions de bibliothèque de débogage de ces fonctions remplissent d’abord la mémoire tampon avec 0xFE. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Mappages de routines de texte générique

Routine TCHAR.H _UNICODE et _MBCS non définis _MBCS défini _UNICODE défini
_tcserror_s strerror_s strerror_s _wcserror_s

Spécifications

Routine En-tête requis
strerror_s, _strerror_s <string.h>
_wcserror_s, __wcserror_s <string.h> ou <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

Consultez l’exemple pour perror.

Voir aussi

Manipulation de chaînes
clearerr
ferror
perror, _wperror