strerror_s, _strerror_s, _wcserror_s, __wcserror_s
Recevez un message d'erreur système (strerror_s, _wcserror_s) ou encore imprimer un message d'erreur défini par l'utilisateur (_strerror_s, __wcserror_s).Ce sont des versions de strerror, _strerror, _wcserror, __wcserror avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.
errno_t strerror_s(
char *buffer,
size_t numberOfElements,
int errnum
);
errno_t _strerror_s(
char *buffer,
size_t numberOfElements,
const char *strErrMsg
);
errno_t _wcserror_s(
wchar_t *buffer,
size_t numberOfElements,
int errnum
);
errno_t __wcserror_s(
wchar_t *buffer,
size_t numberOfElements,
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 pour contenir la chaîne d'erreur.numberOfElements
taille de mémoire tampon.errnum
Numéro de l'erreur.strErrMsg
message écrit par l'utilisateur.
Valeur de retour
Zéro en cas de réussite, le code d'erreur en cas de échec.
conditions d'erreur
buffer |
numberOfElements |
strErrMsg |
contenu d' buffer |
---|---|---|---|
NULL |
quels |
quels |
N/A |
quels |
0 |
quels |
non modifié |
Notes
La fonction d' strerror_s mappe errnum à une chaîne de message d'erreur, qui retourne un pointeur à la chaîne._strerror_s ne prend pas le numéro d'erreur ; il utilise la valeur actuelle d' errno pour déterminer le message approprié.ni strerror_s ni _strerror_s n'imprime réellement le message : Pour qui, vous devez appeler une fonction de sortie semblable fprintf:
if (( _access( "datafile",2 )) == -1 )
{
_strerror_s(buffer, 80);
fprintf( stderr, buffer );
}
Si strErrMsg est NULL, _strerror_s retourne un pointeur vers une chaîne contenant le message d'erreur système pour le dernier appel de bibliothèque qui a produit une erreur.la chaîne de message d'erreur est terminée par le caractère de saut de ligne ("\ n ").Si strErrMsg n'est pas égal à NULL, alors _strerror_s retourne un pointeur vers une chaîne contenant (dans l'ordre) votre message de chaîne, deux-points, un espace, le message d'erreur système pour le dernier appel de bibliothèque pour produire une erreur, et un caractère de saut de ligne.Votre message de chaîne peut être, au plus, 94 caractères.
ces fonctions tronquent le message d'erreur si sa longueur dépasse numberOfElements -1.La chaîne résultante dans buffer est toujours se terminant par null.
Le numéro d'erreur réel pour _strerror_s est stocké dans errnovariable.Les messages d'erreur système sont accessibles via _sys_errlistvariable, qui est un tableau de nombres par erreur classé par messages._strerror_s accède au message d'erreur adapté à l'aide de la valeur d' errno comme index à _sys_errlistvariable.La valeur de _sys_nerr variable est définie comme un nombre maximal d'éléments du tableau d' _sys_errlist .Pour produire des résultats exacts, l'appel _strerror_s immédiatement après une routine de bibliothèque retourne avec une erreur.Sinon, les appels suivants à strerror_s ou l' _strerror_s peuvent remplacer la valeur d' errno .
_wcserror_set __wcserror_ssont des versions à caractères larges d' strerror_set d' _strerror_s, respectivement.
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ètre non valide est appelé, comme décrit dans Validation des paramètres .Si est autorisé à l'exécution de se poursuivre, les fonctions EINVAL de retour et errno défini à EINVAL.
_strerror_s, _wcserror_s, et __wcserror_sne font pas partie de la définition ANSI mais sont plutôt des extensions Microsoft à celui-ci.Ne les utilisez pas où la portabilité est souhaitée ; pour la compatibilité ANSI, utilisezstrerror_sà la place.
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.
Les versions debug de ces fonctions exécutent d'abord mémoire tampon avec 0xFD.Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.
mappages de routines de texte générique
routine de TCHAR.H |
_MBCS & de _UNICODE non défini |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tcserror_s |
strerror_s |
strerror_s |
_wcserror_s |
Configuration requise
routine |
en-tête requis |
---|---|
strerror_s, _strerror_s |
<string.h> |
_wcserror_s, __wcserror_s |
<string.h> ou <wchar.h> |
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
Consultez l'exemple pour perror.
Équivalent .NET Framework
System : : exception : : message