Partager via


strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Recevez un message d'erreur système (strerror_s, _wcserror_s) ou imprimez un message d'erreur défini par l'utilisateur (_strerror_s, __wcserror_s). Il s'agit de versions de strerror, _strerror, _wcserror, __wcserror avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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 des mémoires tampons.

  • errnum
    Numéro de l'erreur.

  • strErrMsg
    messages fournis par l'utilisateur.

Valeur de retour

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

Conditions d'erreur

buffer

numberOfElements

strErrMsg

Contenu de buffer.

NULL

any

any

N/A

any

0

any

non modifié

Notes

La fonction strerror_s mappe errnum à une chaîne de message d'erreur, en retournant la chaîne dans buffer. _strerror_s ne prend pas le numéro d'erreur ; il utilise la valeur errno pour déterminer le message approprié. Ni strerror_s ni _strerror_s n'impriment réellement le message: Pour cela, vous devez appeler une fonction de sortie comme fprintf:

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

Si strErrMsg est NULL, _strerror_s retourne une chaîne dans buffer 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, _strerror_s retourne une chaîne dans buffer 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, de 94 caractères.

Ces fonctions tronquent le message d'erreur si sa longueur dépasse numberOfElements -1. Chaîne résultante dans buffer se termine toujours par null.

Le vrai numéro d'erreur pour _strerror_s apparaît dans la variable errno. Les messages d'erreur système sont accessibles via le variable _sys_errlist, qui est un tableau du nombre par erreur classé par messages. _strerror_s accède au message d'erreur adapté en utilisant la valeur errno comme index à la variable _sys_errlist. La valeur de la variable _sys_nerr est définie comme nombre maximal d'éléments du tableau _sys_errlist. Pour produire des résultats exacts, appelez _strerror_s immédiatement après une routine de bibliothèque retourne avec une erreur. Sinon, les appels suivants à strerror_s ou _strerror_s peuvent remplacer la valeur errno.

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

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

_strerror_s, _wcserror_s, et __wcserror_s ne sont pas parties de la définition ANSI mais sont plutôt des extensions Microsoft de celui-ci. Ne les utilisez pas où la portabilité est souhaitée ; pour compatibilité ANSI, utilisez plutôt strerror_s .

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.

Les versions debug de ces fonctions remplissent d'abord la mémoire tampon avec 0xFD. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Mappages de routines de texte générique

Routine TCHAR.H

_UNICODE & _MBCS non définis

_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 plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Exemple

Consultez l'exemple de perror.

Équivalent .NET Framework

System::Exception::Message

Voir aussi

Référence

Manipulation de chaînes (CRT)

clearerr

ferror

perror, _wperror