perror
, _wperror
Imprime un mensaje de error.
Sintaxis
void perror(
const char *message
);
void _wperror(
const wchar_t *message
);
Parámetros
message
Mensaje de cadena para imprimir.
Comentarios
La función perror
imprime un mensaje de error en stderr
. _wperror
es una versión con caracteres anchos de _perror
; el argumento message
para _wperror
es una cadena de caracteres anchos. Por lo demás,_wperror
y _perror
se comportan de forma idéntica.
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 |
---|---|---|---|
_tperror |
perror |
perror |
_wperror |
Primero se imprime message
, seguido por dos puntos, por el mensaje de error del sistema de la última llamada de la biblioteca que generó el error y, finalmente, por un carácter de nueva línea. Si message
es un puntero nulo o un puntero a una cadena nula, perror
solo imprime el mensaje de error del sistema.
El número de error se almacena en la variable errno
(definida en ERRNO. H). 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. perror
imprime el mensaje de error correspondiente usando el valor errno
como un índice de _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 obtener resultados precisos, llame inmediatamente perror
después de que una rutina de biblioteca devuelva un error. De lo contrario, las llamadas subsiguientes pueden sobrescribir el valor errno
.
En el sistema operativo Windows, algunos valores errno
que aparecen en ERRNO.H no se usan. Estos valores están reservados para su uso en el sistema operativo UNIX. Consulte errno
, _doserrno
, _sys_errlist
y _sys_nerr
para obtener una lista de errno
los valores usados por el sistema operativo Windows. perror
imprime una cadena vacía para cualquier valor errno
que no usen estas plataformas.
Requisitos
Routine | Encabezado necesario |
---|---|
perror |
<stdio.h> o <stdlib.h> |
_wperror |
<stdio.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Bibliotecas
Todas las versiones de las bibliotecas en tiempo de ejecución de C.
Ejemplo
// 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
Vea también
Control de procesos y entornos
clearerr
ferror
strerror
, _strerror
, , _wcserror
, __wcserror