strerror_s, _strerror_s, _wcserror_s, __wcserror_s

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Obtenez un message d’erreur système (strerror_s, _wcserror_s) ou d’imprimer un message d’erreur fournie par l’utilisateur (_strerror_s, __wcserror_s). Voici les versions de strerror, _strerror, _wcserror, __wcserror avec des améliorations de sécurité comme décrit dans fonctionnalités de sécurité de la bibliothèque 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 devant contenir la chaîne d’erreur.

numberOfElements
Taille de mémoire tampon.

errnum
Numéro d'erreur.

strErrMsg
Message fourni par l'utilisateur.

Zéro si l’opération réussit, un code d’erreur en cas d’échec.

Erreur Condtions

buffernumberOfElementsstrErrMsgContenu de buffer
NULLanyanyN/A
any0anynon modifié

Le strerror_s fonction maps errnum vers une chaîne de message d’erreur, retourner la chaîne dans buffer. _strerror_sne prend pas le numéro d’erreur ; Il utilise la valeur actuelle de errno pour déterminer le message approprié. Ni strerror_s ni _strerror_s réellement imprime le message : pour ce faire, 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 généré l’erreur. La chaîne de message d'erreur se termine par le caractère de saut de ligne ('\n'). Si strErrMsg n’est pas égal à NULL, puis _strerror_s retourne une chaîne dans buffer contenant (dans l’ordre) votre message de type chaîne, un signe deux-points, un espace, le message d’erreur système pour le dernier appel de bibliothèque produire une erreur et un caractère de saut de ligne. 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 numberOfElements -1. La chaîne résultante dans buffer est toujours terminée par null.

Le numéro d’erreur réel pour _strerror_s 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 ordonnés par numéro d’erreur. _strerror_saccède au message d’erreur approprié à l’aide de la errno valeur comme un index de la variable _sys_errlist. La valeur de la variable _sys_nerr est défini comme le nombre maximal d’éléments dans le _sys_errlist tableau. Pour générer des résultats précis, appelez _strerror_s de suite après le retour avec erreur d'une routine de bibliothèque. Sinon, les appels suivants à strerror_s ou _strerror_s peuvent remplacer la valeur errno.

_wcserror_set __wcserror_ssont des versions à caractères larges de strerror_set _strerror_s, respectivement.

Ces fonctions valident leurs paramètres. Si la mémoire tampon est NULL ou si le paramètre de taille est égale à 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 EINVAL et errno à EINVAL.

_strerror_s, _wcserror_s,et __wcserror_s ne font pas partie de la définition ANSI mais sont plutôt des extensions de Microsoft. Ne les utilisez pas lorsque la portabilité est souhaitée ; pour une 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 la longueur de la mémoire tampon automatiquement, en éliminant le besoin de spécifier un argument taille. Pour plus d'informations, consultez Secure Template Overloads.

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 et _MBCS non définis_MBCS défini_UNICODE défini
_tcserror_sstrerror_sstrerror_s_wcserror_s
RoutineEn-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é, voir Compatibilité dans l'introduction.

Consultez l’exemple de perror.

System::exception::message

Manipulation de chaînes
clearerr
ferror
pError, _wperror

Afficher: