strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Obtiene un mensaje de error del sistema (strerror_s, _wcserror_s) o imprimir un mensaje de error proporcionado por el usuario (_strerror_s, __wcserror_s).Éstas son versiones de strerror, _strerror, _wcserror, __wcserror con mejoras de seguridad como se describe en Características de seguridad en 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

Parámetros

  • buffer
    Búfer para contener la cadena de error.

  • numberOfElements
    Tamaño del búfer.

  • errnum
    Número de error.

  • strErrMsg
    mensaje proporcionado por el usuario.

Valor devuelto

Cero si es correcto, un código de error del error.

condiciones de error

buffer

numberOfElements

strErrMsg

Contenido de buffer

NULL

cualquier

cualquier

no disponible

cualquier

0

cualquier

no modificado

Comentarios

La función de strerror_s asigna errnum a una cadena de mensaje de error, devolviendo un puntero a la cadena._strerror_s no toma el número de error; utiliza el valor actual de errno para determinar el mensaje adecuado.ni strerror_s ni _strerror_s imprime realmente el mensaje: Para ese, necesita llamar a una función de resultados como fprintf:

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

Si strErrMsg es NULL, _strerror_s devuelve un puntero a una cadena que contiene el mensaje de error del sistema para la última llamada de biblioteca que generó un error.La cadena del mensaje de error es cancelada por el carácter de nueva línea (“\ n ").Si strErrMsg no es igual a NULL, después _strerror_s devuelve un puntero a una cadena que contiene (en orden) el mensaje de cadena, dos puntos, un espacio, el mensaje de error del sistema para la última llamada de biblioteca genera un error, y un carácter de nueva línea.El mensaje de cadena puede ser, como máximo, de 94 caracteres.

estas funciones truncan el mensaje de error si su longitud supera numberOfElements -1.La cadena resultante en buffer siempre es terminada en null.

el número de error real para _strerror_s se almacena en errnovariable.Los mensajes de error del sistema a través de _sys_errlistvariable, que es una matriz por error de número orden los mensajes._strerror_s tiene acceso al mensaje de error adecuado mediante el valor de errno como índice a _sys_errlistvariable.El valor de _sys_nerr variable se define como el número máximo de elementos en la matriz de _sys_errlist .Para generar resultados precisos, llame a _strerror_s inmediatamente después de una rutina de biblioteca vuelve con un error.si no, las llamadas subsiguientes a strerror_s o _strerror_s pueden sobrescribir el valor de errno .

_wcserror_sy __wcserror_sson versiones de caracteres anchos de strerror_sy de _strerror_s, respectivamente.

estas funciones validan sus parámetros.Si el búfer es NULL o si el parámetro size es 0, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros .Si la ejecución puede continuar, las funciones EINVAL return y errno determinado a EINVAL.

_strerror_s, _wcserror_s, y __wcserror_sno forman parte de la definición ANSI pero están en su lugar extensiones de Microsoft para ella.No usar donde desee portabilidad; para la compatibilidad con ANSI, utilicestrerror_sen su lugar.

En C++, mediante estas funciones es simplificado con sobrecargas de plantilla; las sobrecargas pueden deducir longitud de búfer automáticamente, lo que elimina la necesidad de especificar un argumento size.Para obtener más información, vea Sobrecargas de plantilla de seguridad.

Las versiones de depuración de estas funciones primero rellenan el búfer con 0xFD.Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.

Asignaciones de la rutina de texto genérico

rutina de TCHAR.H

_UNICODE y _MBCS no definido

_MBCS definido

_UNICODE definido

_tcserror_s

strerror_s

strerror_s

_wcserror_s

Requisitos

rutina

Encabezado necesario

strerror_s, _strerror_s

<string.h>

_wcserror_s, __wcserror_s

<string.h> o <wchar.h>

Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.

Ejemplo

Vea el ejemplo para perror.

Equivalente en .NET Framework

System:: excepción:: Mensaje

Vea también

Referencia

Manipulación de cadenas (CRT)

clearerr

ferror

perror, _wperror