Share via


strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Receber uma mensagem de erro do sistema (strerror_s, _wcserror_s) ou imprimir um (mensagem de erro fornecida pelo usuário_strerror_s, __wcserror_s). Essas são sistema autônomo versões de strError, _strerror, _wcserror, __wcserror com aprimoramentos de segurança conforme descrito em Aprimoramentos de segurança no 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
    Buffer para armazenar a seqüência de caracteres de erro.

  • numberOfElements
    dimensionar do buffer.

  • errnum
    Número de Erro

  • strErrMsg
    Mensagem fornecida pelo usuário.

Valor de retorno

Zero se for bem-sucedido, um código de erro em caso de falha.

Condições de erro

buffer

numberOfElements

strErrMsg

Sumário de buffer

NULL

any

any

n/d

any

0

any

não modificado

Comentários

The strerror_s mapas de função errnum como uma seqüência de caracteres de mensagem de erro, retornando um ponteiro para a seqüência de caracteres. _strerror_s não obtém o número do erro; ele usa o valor corrente de errno para determinar a mensagem apropriada. Nenhuma das strerror_s nem _strerror_s Na verdade, imprime a mensagem: Para isso, você precisa chamar uma função de saída, sistema autônomo fprintf:

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

If strErrMsg é NULL, _strerror_s Retorna um ponteiro para uma seqüência de caracteres que contém a mensagem de erro do sistema para a última telefonar da biblioteca que produziu um erro. A cadeia de caracteres da mensagem de erro é terminada por caractere de nova linha ('\n').If strErrMsg não é igual a NULL, em seguida, _strerror_s Retorna um ponteiro para uma seqüência de caracteres que contém (em ordem), sua mensagem de seqüência de caracteres, dois-pontos, um espaço, a mensagem de erro do sistema para a última telefonar biblioteca de produzir um erro e um caractere de nova linha. Sua mensagem de seqüência de caracteres pode ter, no máximo, 94 caracteres.

Essas funções truncar a mensagem de erro se seu comprimento exceder numberOfElements -1. A seqüência de caracteres resultante em buffer é sempre terminada com nulo.

número do erro real de _strerror_s é armazenado na variável errno.As mensagens de erro do sistema são acessadas por meio da variável _sys_errlist, que é uma matriz de mensagens ordenadas por número do erro._strerror_s acessa a mensagem de erro apropriadas usando o errno valor sistema autônomo um índice para a variável _sys_errlist. O valor da variável _sys_nerr definido sistema autônomo o número máximo de elementos no _sys_errlist matriz. Para produzir resultados precisos, telefonar _strerror_s imediatamente após uma rotina de biblioteca retorna com um erro. Caso contrário, subseqüentes chamadas para strerror_s ou _strerror_s pode substituir o errno valor.

_wcserror_sand __wcserror_sare wide-character versions of strerror_sand _strerror_s, respectively.

Essas funções validar seus parâmetros.Se o buffer é NULL ou se o parâmetro dimensionar for 0, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro . Se a execução for permitida para continuar, as funções retornam EINVAL e conjunto errno para EINVAL.

_strerror_s, _wcserror_s, e __wcserror_s não são parte da definição de ANSI mas em vez disso, são extensões do Microsoft. Não use-los onde portabilidade for desejada; compatibilidade ANSI, usar strerror_s em vez disso.

No C++, usando essas funções é simplificado pela sobrecargas de modelo; sobrecargas de podem inferir comprimento do buffer automaticamente, eliminando a necessidade de especificar um argumento de dimensionar.For more information, see Proteger overloads de modelo.

As versões de depurar dessas funções primeiro preenchem o buffer com 0xFD.Para desabilitar esse comportamento, use _CrtSetDebugFillThreshold.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_tcserror_s

strerror_s

strerror_s

_wcserror_s

Requisitos

Rotina

Cabeçalho necessário

strerror_s, _strerror_s

<string.h>

_wcserror_s, __wcserror_s

<string.h> ou <wchar.h>

Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

Exemplo

Consulte o exemplo para perror.

Equivalente do NET Framework

sistema::exceção::mensagem

Consulte também

Referência

Manipulação de seqüência de caracteres (CRT)

clearerr

ferror

perror, _wperror