Compartilhar via


strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Obter uma mensagem de erro do sistema (strerror_s, _wcserror_s) ou imprimir uma mensagem de erro fornecida pelo usuário (_strerror_s, __wcserror_s).Estas são as versões do strError, _strerror, _wcserror, __wcserror com aprimoramentos de segurança, conforme descrito em Recursos 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 erros.

  • numberOfElements
    Tamanho do buffer.

  • errnum
    Número de Erro

  • strErrMsg
    Mensagem fornecido 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

Conteúdo debuffer

NULL

any

any

n/d

any

0

any

não modificado

Comentários

O strerror_s funcionarem mapas errnum para uma seqüência de mensagem de erro, retornando um ponteiro para a seqüência de caracteres._strerror_snão leva o número de erro; Ele usa o valor atual de errno para determinar a mensagem apropriada.Nem strerror_s nem _strerror_s , na verdade, imprime a mensagem: para isso, você precisa chamar uma função de saída, como fprintf:

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

Se 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 chamada de biblioteca que produziu um erro.A seqüência de caracteres de mensagem de erro é terminada por caractere de nova linha ('\n').Se 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 chamada de biblioteca, produzindo um erro e um caractere de nova linha.Sua mensagem de seqüência de caracteres pode ter como 94 caracteres, no máximo.

Essas funções truncar a mensagem de erro se o respectivo comprimento exceder numberOfElements -1.A string resultante em buffer é sempre terminação nula.

O número de erro real para _strerror_s é armazenado na variável errno.As mensagens de erro do sistema são acessadas através da variável _sys_errlist, que é uma matriz de mensagens ordenadas por número de erro._strerror_sacesse a mensagem de erro apropriado usando a errno o valor como um índice para a variável _sys_errlist.O valor da variável _sys_nerr é definido como o número máximo de elementos de _sys_errlist array.Para produzir resultados precisos, chame _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_se __wcserror_ssão versões de caractere largo de strerror_se _strerror_s, respectivamente.

Essas funções validam seus parâmetros.Se o buffer é NULL ou se o parâmetro size for 0, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro .Se a execução terá permissão para continuar, as funções retornam EINVAL e defina errno para EINVAL.

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

No C++, a utilização dessas funções é simplificado pela sobrecargas do modelo; os métodos sobrecarregados podem inferir comprimento do buffer automaticamente, eliminando a necessidade de especificar um argumento de tamanho.Para obter mais informações, consulte Proteger Overloads de modelo.

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

Mapeamentos de rotina de texto genérico

TCHAR.Rotina H

_ Unicode & _ MBCS do arquivo não definido

_ MBCS do arquivo 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 de compatibilidade, consulte compatibilidade na introdução.

Exemplo

Consulte o exemplo para perror.

Equivalência do .NET Framework

System::Exception::Message

Consulte também

Referência

Manipulação de cadeia de caracteres (CRT)

clearerr

ferror

perror, _wperror