Condividi tramite


strerror_s, _strerror_s, _wcserror_s, __wcserror_s

ottenere un messaggio di errore di sistema (strerror_s, _wcserror_s) o visualizzare un messaggio di errore fornito dall'utente (_strerror_s, __wcserror_s).queste sono versioni di strerror, _strerror, _wcserror, __wcserror con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

errno_t strerror_s(
   char *buffer,
   size_t numberOfElements,
   int errnum 
);
errno_t _strerror_s(
   char *buffer,
   size_t numberOfElements,
   const char *strErrMsg 
);
errno_t _wcserror_s(
   wchar_t *buffer,
   size_t numberOfElements,
   int errnum 
);
errno_t __wcserror_s(
   wchar_t *buffer,
   size_t numberOfElements,
   const wchar_t *strErrMsg 
);
template <size_t size>
errno_t strerror_s(
   char (&buffer)[size],
   int errnum 
); // C++ only
template <size_t size>
errno_t _strerror_s(
   char (&buffer)[size],
   const char *strErrMsg 
); // C++ only
template <size_t size>
errno_t _wcserror_s(
   wchar_t (&buffer)[size],
   int errnum 
); // C++ only
template <size_t size>
errno_t __wcserror_s(
   wchar_t (&buffer)[size],
   const wchar_t *strErrMsg 
); // C++ only

Parametri

  • buffer
    buffer per utilizzare stringa di errore.

  • numberOfElements
    Dimensione del buffer.

  • errnum
    Un codice di errore.

  • strErrMsg
    messaggio fornito dall'utente.

Valore restituito

Zero se l'operazione viene completata correttamente, un codice di errore in caso di errore.

condizioni di errore

buffer

numberOfElements

strErrMsg

Contenuto di buffer

NULL

qualsiasi

qualsiasi

n/d

qualsiasi

0

qualsiasi

non modificato

Note

strerror_s mapping di funzione errnum a una stringa di messaggio di errore, restituendo un puntatore alla stringa._strerror_s non accetta il numero errore; utilizza il valore corrente di errno per determinare il messaggio appropriato.Nessuno strerror_s né _strerror_s in realtà viene visualizzato il messaggio: Per il secondo passaggio, è necessario chiamare una funzione di output come fprintf:

if (( _access( "datafile",2 )) == -1 )
{
   _strerror_s(buffer, 80);
   fprintf( stderr, buffer );
}

se strErrMsg viene NULL, _strerror_s restituisce un puntatore a una stringa contenente il messaggio di errore di sistema per l'ultima chiamata di libreria che ha generato un errore.La stringa del messaggio di errore viene interrotta dal carattere di nuova riga (" \ n ").se strErrMsg non è uguale a NULL, quindi _strerror_s restituisce un puntatore a una stringa contenenteordine il messaggio stringa, i due punti, uno spazio, il messaggio di errore di sistema l'ultima chiamata della libreria generando un errore e un carattere di nuova riga.Il messaggio stringa può essere, al massimo, 94 caratteri.

Queste funzioni troncano il messaggio di errore se la relativa lunghezza percorso numberOfElements -1.La stringa di risultato in buffer è sempre con terminazione null.

Il numero effettivo errore per _strerror_s viene memorizzato nella variabile errno.I messaggi di errore di sistema accede alla variabile _sys_errlist, che è una matrice di messaggi ha ordinato in base al numero errore._strerror_s accede al messaggio di errore appropriato tramite errno valore come indice alla variabile _sys_errlist.Il valore della variabile _sys_nerr viene definito come numero massimo di elementi in _sys_errlist matrice.Per fornire risultati accurati, chiamata _strerror_s subito dopo il completamento di una routine di libreria con un errore.In caso contrario, chiamate successive a strerror_s o _strerror_s può sovrascrivere errno valore.

_wcserror_se __wcserror_snelle versioni a caratteri estesi di strerror_se _strerror_s, rispettivamente.

Queste funzioni convalidano i relativi parametri.se il buffer è NULL o se il parametro di dimensione è 0, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri .Se l'esecuzione è consentita per continuare, il ripristino di funzioni EINVAL e set errno in EINVAL.

_strerror_s, _wcserror_s, e __wcserror_snon fa parte della definizione ANSI ma viene invece estensioni Microsoft su.Non utilizzarle dove la portabilità si desidera; per compatibilità ANSI, utilizzarestrerror_sanziché.

In C++, utilizzando queste funzioni è semplificato dagli overload del modello; gli overload possono dedurre la lunghezza del buffer automaticamente, eliminando la necessità di specificare un argomento di dimensione.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.

Le versioni di debug di queste funzioni innanzitutto soddisfano il buffer del valore 0xFD.Per disabilitare questo comportamento, utilizzare _CrtSetDebugFillThreshold.

Mapping di routine a testo generico

routine di TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcserror_s

strerror_s

strerror_s

_wcserror_s

Requisiti

routine

Intestazione di associazione

strerror_s, _strerror_s

<string.h>

_wcserror_s, __wcserror_s

<string.h> o <wchar.h>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Esempio

Vedere l'esempio relativo a perror.

Equivalente .NET Framework

System:: eccezione:: messaggio

Vedere anche

Riferimenti

Modifica delle stringhe (CRT)

clearerr

ferror

perror, _wperror