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
, _wcserror
mit __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 |
any | any | Nicht zutreffend |
any | 0 | any | 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 strErrMsg
NULL
_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 NULL
ist, _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 errno
gespeichert. Auf die Systemfehlermeldungen wird über die Variable _sys_errlist
zugegriffen, 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_s
und __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 Secure Template Overloads.
Die Debugbibliotheksversionen dieser Funktionen füllen zuerst den Puffer mit 0xFE. Verwenden Sie _CrtSetDebugFillThreshold
zum Deaktivieren dieses Verhaltens .
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.
Mapping generischer Textroutinen
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
Ein Beispiel hierfür finden Sie unter perror
.