strerror
, _strerror
, _wcserror
__wcserror
Ottiene un messaggio di errore dal sistema (strerror
, _wcserror
) o formatta una stringa di messaggio di errore fornita dall'utente (_strerror
, __wcserror
). Sono disponibili versioni più sicure di queste funzioni; vedere strerror_s
, _strerror_s
, _wcserror_s
, __wcserror_s
.
Sintassi
char * strerror(
int errnum );
char * _strerror(
const char *strErrMsg );
wchar_t * _wcserror(
int errnum );
wchar_t * __wcserror(
const wchar_t *strErrMsg );
Parametri
errnum
Numero di errore.
strErrMsg
Messaggio fornito dall'utente.
Valore restituito
Tutte queste funzioni restituiscono un puntatore a una stringa di messaggio di errore, in un buffer di archiviazione locale del thread di proprietà del runtime. Le chiamate successive sullo stesso thread possono sovrascrivere questa stringa.
Osservazioni:
La funzione strerror
mappa errnum
su una stringa di messaggio di errore e restituisce un puntatore alla stringa. Le strerror
funzioni e _strerror
non stampano effettivamente il messaggio. Per stampare, chiamare una funzione di output, fprintf
ad esempio :
if (( _access( "datafile", 2 )) == -1 )
fprintf( stderr, _strerror(NULL) );
Se strErrMsg
viene passato come NULL
, _strerror
restituisce un puntatore a una stringa. Contiene il messaggio di errore di sistema per l'ultima chiamata alla libreria che ha generato un errore. Se si chiama __wcserror
, la stringa del messaggio di errore viene terminata dal carattere di nuova riga ('\n'
). Le altre funzioni non aggiungono '\n'
. Quando strErrMsg
non NULL
è , la stringa contiene, in ordine: strErrMsg
stringa, due punti, uno spazio, il messaggio di errore di sistema. Il messaggio stringa può contenere al massimo 94 caratteri, in caratteri stretti (_strerror
) o wide (__wcserror
).
Il numero di errore effettivo per _strerror
viene archiviato nella variabile errno
. Per produrre risultati accurati, chiamare _strerror
immediatamente dopo che una routine di libreria restituisce un errore. In caso contrario, le chiamate successive alle routine della libreria potrebbero sovrascrivere il errno
valore.
_wcserror
e __wcserror
sono versioni a caratteri wide di strerror
e _strerror
rispettivamente.
_strerror
, _wcserror
e __wcserror
sono specifici di Microsoft, non fanno parte della libreria C standard. Non è consigliabile usarli dove si vuole il codice portatile. Per la compatibilità C Standard, usare strerror
invece .
Per ottenere stringhe di errore, è consigliabile strerror
o _wcserror
anziché le macro _sys_errlist
deprecate e _sys_nerr
le funzioni __sys_errlist
interne deprecate e __sys_nerr
.
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 |
---|---|---|---|
_tcserror |
strerror |
strerror |
_wcserror |
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
strerror |
<string.h> |
_strerror |
<string.h> |
_wcserror , __wcserror |
<string.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
Vedere l'esempio per perror
.
Vedi anche
Manipolazione delle stringhe
clearerr
ferror
perror
, _wperror