perror
, _wperror
Stampare un messaggio di errore.
Sintassi
void perror(
const char *message
);
void _wperror(
const wchar_t *message
);
Parametri
message
Messaggio stringa da stampare.
Osservazioni:
La funzione perror
stampa un messaggio di errore su stderr
. _wperror
è una versione a caratteri wide di _perror
; l'argomento message
in _wperror
è una stringa di caratteri wide. In caso contrario,_wperror
e _perror
si comportano in modo identico.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Mapping di routine di testo generico
Routine TCHAR.H | _UNICODE e _MBCS non definito |
_MBCS definito |
_UNICODE definito |
---|---|---|---|
_tperror |
perror |
perror |
_wperror |
message
viene prima stampato, seguito da due punti, quindi dal messaggio di errore del sistema per l'ultima chiamata di libreria che ha generato l'errore e, infine, da un carattere di nuova riga. Se message
è un puntatore null o un puntatore a una stringa null, perror
stampa solo il messaggio di errore del sistema.
Il numero di errore viene archiviato nella variabile errno
(definita in ERRNO. H). I messaggi di errore di sistema sono accessibili tramite la variabile _sys_errlist
, ovvero una matrice di messaggi ordinati in base al numero di errore. perror
stampa il messaggio di errore appropriato utilizzando il valore errno
come indice a _sys_errlist
. Il valore della variabile _sys_nerr
viene definito come numero massimo di elementi nella _sys_errlist
matrice.
Per ottenere risultati accurati, chiamare perror
immediatamente dopo che una routine di libreria restituisce un errore. In caso contrario, le chiamate successive possono sovrascrivere il valore errno
.
Nel sistema operativo Windows, alcuni valori errno
elencati in ERRNO.H sono inutilizzati. Questi valori sono riservati per l'utilizzo del sistema operativo UNIX. Vedere errno
, _doserrno
, _sys_errlist
e _sys_nerr
per un elenco di errno
valori usati dal sistema operativo Windows. perror
stampa una stringa vuota per qualsiasi valore errno
non utilizzato da queste piattaforme.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
perror |
<stdio.h> o <stdlib.h> |
_wperror |
<stdio.h> o <wchar.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Librerie
Tutte le versioni delle librerie di runtime C.
Esempio
// 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
Vedi anche
Processo e controllo dell'ambiente
clearerr
ferror
strerror
, _strerror
, _wcserror
__wcserror