Compartir a través de


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_errlisty _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

Consulte también

Control de procesos y entornos
clearerr
ferror
strerror, _strerror, _wcserror, __wcserror