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_errlist
e _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