Partilhar via


perror, _wperror

Imprima uma mensagem de erro.

Sintaxe

void perror(
   const char *message
);
void _wperror(
   const wchar_t *message
);

Parâmetros

message
Mensagem de cadeia de caracteres para imprimir.

Comentários

A função perror imprime uma mensagem de erro para stderr. A função _wperror é uma versão de caractere largo da função _perror; o argumento message para _wperror é uma cadeia de caracteres larga. Caso contrário, _wperror e _perror se comportam de forma idêntica.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Mapeamentos de rotina de texto genérico

Rotina TCHAR.H _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tperror perror perror _wperror

message é impresso primeiro, seguido por dois-pontos e pela mensagem de erro do sistema para a última chamada de biblioteca que gerou o erro e, finalmente, por um caractere de nova linha. Se message for um ponteiro nulo ou um ponteiro para uma cadeia de caracteres nula, perror imprimirá somente a mensagem de erro do sistema.

O número do erro é gravado na variável errno (definida em ERRNO. H). 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 de erro. perror imprime a mensagem de erro apropriada usando o valor errno como um índice para _sys_errlist. O valor da variável _sys_nerr é definido como o número máximo de elementos na _sys_errlist matriz.

Para obter resultados precisos, chame perror imediatamente após uma rotina de biblioteca retornar um erro. Caso contrário, chamadas subsequentes podem substituir o valor errno.

No sistema operacional Windows, alguns valores errno listados no ERRNO.H não são usados. Esses valores são reservados para uso pelo sistema operacional UNIX. Consulte errno, _doserrno, _sys_errliste _sys_nerr para obter uma lista de errno valores usados pelo sistema operacional Windows. perror imprime uma cadeia de caracteres vazia para qualquer valor errno não usado por essas plataformas.

Requisitos

Rotina Cabeçalho necessário
perror <stdio.h> ou <stdlib.h>
_wperror <stdio.h> ou <wchar.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Bibliotecas

Todas as versões das bibliotecas em tempo de execução C.

Exemplo

// crt_perror.c
// compile with: /W3
/* This program attempts to open a file named
* NOSUCHF.ILE. Because this file probably doesn't exist,
* an error message is displayed. The same message is
* created using perror, strerror, and _strerror.
*/

#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <share.h>

int main( void )
{
   int  fh;

   if( _sopen_s( &fh, "NOSUCHF.ILE", _O_RDONLY, _SH_DENYNO, 0 ) != 0 )
   {
      /* Three ways to create error message: */
      perror( "perror says open failed" );
      printf( "strerror says open failed: %s\n",
         strerror( errno ) ); // C4996
      printf( _strerror( "_strerror says open failed" ) ); // C4996
      // Note: strerror and _strerror are deprecated; consider
      // using strerror_s and _strerror_s instead.
   }
   else
   {
      printf( "open succeeded on input file\n" );
      _close( fh );
   }
}
perror says open failed: No such file or directory
strerror says open failed: No such file or directory
_strerror says open failed: No such file or directory

Confira também

Controle de processo e ambiente
clearerr
ferror
strerror, _strerror, _wcserror, __wcserror