strerror_s
, _strerror_s
, , _wcserror_s
, __wcserror_s
Obtiene un mensaje de error del sistema (strerror_s
, _wcserror_s
), o imprime un mensaje de error proporcionado por el usuario (_strerror_s
, __wcserror_s
). Estas funciones son versiones de , , , con __wcserror
mejoras de seguridad, como se describe en Características de seguridad de CRT. _wcserror
_strerror
strerror
Sintaxis
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
Parámetros
buffer
Búfer que va a contener la cadena de error.
sizeInBytes
El número de bytes en el búfer.
sizeInWords
Número de palabras del búfer.
errnum
Número de error.
strErrMsg
Mensaje proporcionado por el usuario.
Valor devuelto
Devuelve cero si se ejecuta correctamente; devuelve un código de error si se produce un error.
Condiciones del error
buffer |
sizeInBytes /sizeInWords |
strErrMsg |
Contenido de buffer |
---|---|---|---|
NULL |
cualquiera | cualquiera | N/D |
cualquiera | 0 | cualquiera | no modificado |
Comentarios
La función strerror_s
es segura para subprocesos.
La función strerror_s
asigna errnum
a una cadena de mensaje de error, y devuelve la cadena de buffer
. _strerror_s
no toma el número de error. Usa el valor actual de errno
para determinar el mensaje adecuado. El mensaje no se imprime o muestra mediante strerror_s
o _strerror_s
. Para generar el mensaje, debe llamar a una función de salida como fprintf
:
if (( _access( "datafile",2 )) == -1 )
{
_strerror_s(buffer, 80, NULL);
fprintf( stderr, buffer );
}
Si strErrMsg
es NULL
, _strerror_s
devuelve una cadena en buffer
que contiene el mensaje de error del sistema para la última llamada de biblioteca que produjo un error. Si strErrMsg
no es igual a NULL
, _strerror_s
devuelve una cadena en buffer
que contiene (en orden) el mensaje de cadena, dos puntos, un espacio, el mensaje de error del sistema para la última llamada de biblioteca que produjo un error. El mensaje de cadena puede tener, como máximo, 94 caracteres.
Estas funciones truncan el mensaje de error si su longitud supera el tamaño del búfer - 1. La cadena resultante en buffer
siempre termina con un valor NULL.
El número de error real de _strerror_s
se almacena en la variable errno
. Se accede a los mensajes de error del sistema a través de la variable _sys_errlist
, que es una matriz de mensajes ordenados por número de error. _strerror_s
obtiene acceso al mensaje de error adecuado mediante el valor de errno
como índice de la variable _sys_errlist
. El valor de la variable _sys_nerr
se define como el número máximo de elementos de la _sys_errlist
matriz. Para generar resultados precisos, llame inmediatamente _strerror_s
después de que se devuelva una rutina de biblioteca con un error. De lo contrario, las llamadas subsiguientes a strerror_s
o _strerror_s
pueden sobrescribir el valor de errno
.
_wcserror_s
y __wcserror_s
son versiones con caracteres anchos de strerror_s
y _strerror_s
, respectivamente.
Estas funciones validan sus parámetros. Si el búfer es NULL
o si el parámetro de tamaño es 0, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros . Si la ejecución puede continuar, las funciones devuelven EINVAL
y establecen errno
en EINVAL
.
_strerror_s
, _wcserror_s
y __wcserror_s
no forman parte de la definición ANSI, sino que son extensiones de Microsoft. No los use donde se desee la portabilidad; para la compatibilidad con ANSI, use strerror_s
en su lugar.
En C++, el uso de estas funciones se simplifica mediante sobrecargas de plantilla. Las sobrecargas pueden deducir la longitud del búfer automáticamente, lo que elimina la necesidad de especificar un argumento de tamaño. Para obtener más información, consulte Sobrecargas de plantilla seguras.
Las versiones de la biblioteca de depuración de estas funciones rellenan primero el búfer con 0xFE. Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold
.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Asignaciones de rutinas de texto genérico
Rutina TCHAR.H | _UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcserror_s |
strerror_s |
strerror_s |
_wcserror_s |
Requisitos
Routine | Encabezado necesario |
---|---|
strerror_s , _strerror_s |
<string.h> |
_wcserror_s , __wcserror_s |
<string.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
Vea el ejemplo de perror
.