strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Abrufen der Systemfehlermeldung (strerror_s_wcserror_s) oder Drucken einer vom Benutzer angegebenen Fehlermeldung (_strerror_s, __wcserror_s). Diese Funktionen sind Versionen von strerror, _strerror, _wcserrormit __wcserror Sicherheitsverbesserungen, wie in Sicherheitsfeatures im CRT beschrieben.

Syntax

errno_t strerror_s(
   char *buffer,
   size_t sizeInBytes,
   int errnum
);
errno_t _strerror_s(
   char *buffer,
   size_t sizeInBytes,
   const char *strErrMsg
);
errno_t _wcserror_s(
   wchar_t *buffer,
   size_t sizeInWords,
   int errnum
);
errno_t __wcserror_s(
   wchar_t *buffer,
   size_t sizeInWords,
   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

Parameter

buffer
Puffer für die Fehlerzeichenfolge.

sizeInBytes
Die Anzahl von Bytes im Puffer.

sizeInWords
Die Anzahl der Wörter im Puffer.

errnum
Fehlernummer.

strErrMsg
Vom Benutzer angegebene Meldung.

Rückgabewert

Null, wenn erfolgreich, Fehlercode bei Fehler.

Fehlerbedingungen

buffer sizeInBytes/sizeInWords strErrMsg Inhalt von buffer
NULL Beliebig Beliebig
Beliebig 0 Beliebig nicht geändert

Hinweise

Die strerror_s Funktion ist threadsicher.

Die strerror_s-Funktion ordnet errnum einer Fehlermeldungszeichenfolge zu und gibt die Zeichenfolge in buffer zurück. _strerror_s verwendet nicht die Fehlernummer, sondern den aktuellen Wert von errno, um die entsprechende Meldung zu bestimmen. Die Nachricht wird nicht gedruckt oder angezeigt von strerror_s oder _strerror_s. Zum Ausgeben der Nachricht müssen Sie eine Ausgabefunktion aufrufen, z fprintf. B. :

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

Gibt in diesem Beispiel strErrMsgNULL_strerror_s eine Zeichenfolge buffer zurück, die die Systemfehlermeldung für den letzten Bibliotheksaufruf enthält, der einen Fehler verursacht hat. Wenn strErrMsg dieser Wert nicht gleich NULList, _strerror_s wird eine Zeichenfolge zurückgegeben, die buffer (in der Reihenfolge) der Zeichenfolgennachricht, eines Doppelpunkts, eines Leerzeichens, der Systemfehlermeldung für den letzten Bibliotheksaufruf enthält, der einen Fehler verursacht hat. Die Zeichenfolgenmeldung darf höchstens 94 Zeichen lang sein.

Diese Funktionen kürzen die Fehlermeldung ab, wenn ihre Länge die Größe des Puffers - 1 überschreitet. Die resultierende Zeichenfolge in buffer endet immer mit NULL.

Die tatsächliche Fehlernummer wird _strerror_s in der Variablen errnogespeichert. Auf die Systemfehlermeldungen wird über die Variable _sys_errlistzugegriffen, bei der es sich um ein Array von Nachrichten handelt, die nach Fehlernummer sortiert sind. _strerror_s greift auf die entsprechende Fehlermeldung zu, indem der errno-Wert als Index zur Variablen _sys_errlist verwendet wird. Der Wert der Variablen _sys_nerr wird als maximale Anzahl von Elementen im _sys_errlist Array definiert. Um genaue Ergebnisse zu erzielen, rufen Sie _strerror_s sofort nach der Rückgabe einer Bibliotheksroutine mit einem Fehler auf. Andernfalls können nachfolgende Aufrufe von strerror_s oder _strerror_s den errno-Wert überschreiben.

_wcserror_s und __wcserror_s sind jeweils Breitzeichenversionen von strerror_s und _strerror_s.

Diese Funktionen überprüfen ihre Parameter. Wenn der Puffer 0 ist NULL oder der Größenparameter 0 ist, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, gibt diese Funktion EINVAL zurück und setzt errno auf EINVAL.

_strerror_s, _wcserror_sund __wcserror_s sind nicht Teil der ANSI-Definition, sondern sind stattdessen Microsoft-Erweiterungen dafür. Verwenden Sie sie nicht, wenn Portabilität gewünscht ist; verwenden Sie strerror_s stattdessen anSI-Kompatibilität.

Die Verwendung dieser Funktionen in C++ wird durch Überladungen (als Vorlagen vorhanden) vereinfacht. Überladungen können automatisch die Pufferlänge ableiten, sodass kein Größenargument angegeben werden muss. Weitere Informationen finden Sie unter "Sichere Vorlagenüberladungen".

Die Debugbibliotheksversionen dieser Funktionen füllen zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThresholdzum Deaktivieren dieses Verhaltens .

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.

Generische Textroutinzuordnungen

TCHAR.H-Routine _UNICODE und _MBCS nicht definiert _MBCS Definiert _UNICODE Definiert
_tcserror_s strerror_s strerror_s _wcserror_s

Anforderungen

Routine Erforderlicher Header
strerror_s, _strerror_s <string.h>
_wcserror_s, __wcserror_s <string.h> oder <wchar.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

Sehen Sie sich das Beispiel für perror.

Siehe auch

Zeichenfolgenmanipulation
clearerr
ferror
perror, _wperror