strerror_s, _strerror_s, _wcserror_s, __wcserror_s
Komunikat o błędzie systemu (strerror_s, _wcserror_s) lub wydrukować komunikat o błędzie dostarczone przez użytkownika (_strerror_s, __wcserror_s).Są to wersje strerror, _strerror, _wcserror, __wcserror z rozszerzeń zabezpieczeń opisane w Funkcje zabezpieczeń w 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
Parametry
buffer
Bufor, aby pomieścić ciąg błędu.numberOfElements
Rozmiar buforu.errnum
Numer błędu.strErrMsg
Wiadomości dostarczone przez użytkownika.
Wartość zwracana
Zero, jeśli kończy się pomyślnie, kod błędu w przypadku awarii.
Błąd Condtions
buffer |
numberOfElements |
strErrMsg |
Zawartośćbuffer |
---|---|---|---|
NULL |
wszelkie |
wszelkie |
n/d! |
wszelkie |
0 |
wszelkie |
Nie zmodyfikowano |
Uwagi
strerror_s Działać mapy errnum ciąg komunikat o błędzie, zwracanie wskaźnik do ciągu._strerror_snie przyjmuje numer błędu; korzysta z bieżącą wartość errno , aby określić odpowiedni komunikat.Ani strerror_s ani _strerror_s rzeczywiście drukuje wiadomość:, musisz wywołania funkcji danych wyjściowych, takich jak fprintf:
if (( _access( "datafile",2 )) == -1 )
{
_strerror_s(buffer, 80);
fprintf( stderr, buffer );
}
Jeśli strErrMsg jest NULL, _strerror_s zwraca wskaźnik do ciąg zawierający komunikat o błędzie systemu dla ostatniego wywołania biblioteki, które powoduje błąd.Ciąg komunikat o błędzie jest wypowiedziana przez znak nowego wiersza (\n).Jeśli strErrMsg nie jest równa NULL, następnie _strerror_s zwraca wskaźnik do ciąg zawierający (w podanej kolejności), wiadomość ciąg, dwukropek, spację, komunikat o błędzie systemu dla ostatniego wywołania biblioteki produkujących błąd i znak nowego wiersza.Wiadomość ciąg może być co najwyżej 94 znaków.
Te funkcje obciąć komunikat o błędzie, jeśli jego długość przekracza numberOfElements -1.Wynikowy ciąg w buffer jest zawsze zakończonym znakiem null.
Żaden numer błędu dla _strerror_s jest przechowywane w zmiennej errno.Komunikaty o błędach systemu są dostępne za pośrednictwem zmiennej _sys_errlist, który jest tablicą wiadomości uporządkowane według numer błędu._strerror_suzyskuje dostęp do wiadomości odpowiednie błąd za pomocą errno wartość jako indeks w zmiennej _sys_errlist.Wartość zmiennej _sys_nerr jest zdefiniowany jako maksymalna liczba elementów w _sys_errlist tablicy.W celu uzyskania dokładnych wyników, call _strerror_s natychmiast po rutynowych biblioteki zwraca błąd.Inaczej, kolejne wywołania strerror_s lub _strerror_s można zastąpić errno wartości.
_wcserror_si __wcserror_swersji szerokich znaków z strerror_si _strerror_s, odpowiednio.
Te funkcje sprawdzania poprawności ich parametrów.Jeśli bufor jest NULL lub jeśli parametr size jest 0, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru .Jeśli wykonanie może kontynuować, funkcje zwracają wartość EINVAL i errno do EINVAL.
_strerror_s, _wcserror_s,i __wcserror_s nie są częścią definicji ANSI, ale zamiast tego są rozszerzenia Microsoft.Nie należy używać ich gdzie mobilność jest pożądane; zgodność ANSI, użyj strerror_s zamiast.
W języku C++ korzystając z tych funkcji jest uproszczona poprzez overloads szablonu; overloads można wywnioskować strony długość buforu automatycznie, eliminując konieczność należy określić argument rozmiar.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.
Wersje do debugowania te funkcje najpierw wypełnić bufor z 0xFD.Aby wyłączyć to zachowanie, należy użyć _CrtSetDebugFillThreshold.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rutynowe H |
_UNICODE & Nie zdefiniowano _MBCS |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_tcserror_s |
strerror_s |
strerror_s |
_wcserror_s |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
strerror_s, _strerror_s |
<string.h> |
_wcserror_s, __wcserror_s |
<string.h> lub <wchar.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
Zobacz przykład dla perror.