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
__wcserror
avec des améliorations de sécurité, comme décrit dans les fonctionnalités de sécurité dans le CRT. _strerror
strerror
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 NULL
le 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 NULL
cas, _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_s
et __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
.