strerror_s, _strerror_s, _wcserror_s, __wcserror_s
Pobierz komunikat o błędzie systemu (strerror_s, _wcserror_s) lub wydrukuj komunikat o błędzie dostarczony przez użytkownika (_strerror_s, __wcserror_s).Są to wersje strerror, _strerror, _wcserror, __wcserror ze wzmocnieniem zabezpieczeń, jak opisano 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 do przechowywania ciągu błędu.numberOfElements
Rozmiar buforu.errnum
Numer błędu.strErrMsg
Wiadomości dostarczone przez użytkownika.
Wartość zwracana
Zero, jeśli operacja się powiedzie; w przeciwnym razie, kod błędu.
Warunki błędów
buffer |
numberOfElements |
strErrMsg |
Zawartośćbuffer |
---|---|---|---|
NULL |
jakakolwiek |
jakakolwiek |
Nie dotyczy |
jakakolwiek |
0 |
jakakolwiek |
nie zmodyfikowano |
Uwagi
strerror_s funkcja mapy errnum ciąg komunikatu o błędzie zwraca ciąg w buffer._strerror_s nie przyjmuje numeru błędu; używa bieżącej wartości errno, aby określić odpowiedni komunikat.Ani strerror_s ani _strerror_s w rzeczywistości nie drukują komunikatu: do tego celu należy wywołać funkcję danych wyjściowych, taką jak fprintf:
if (( _access( "datafile",2 )) == -1 )
{
_strerror_s(buffer, 80);
fprintf( stderr, buffer );
}
Jeśli strErrMsg wynosi NULL, _strerror_s zwraca ciąg w buffer zawierający komunikat o błędzie systemu dla ostatniego wywołania biblioteki, które powoduje błąd.Ciąg komunikatu o błędzie jest zakończony przez znak nowego wiersza (\n).Jeśli strErrMsg nie jest równa NULL, wówczas _strerror_s zwraca ciąg w buffer zawierający (w kolejności) komunikat ciągu, dwukropek, spację, komunikat o błędzie systemu dla ostatniego wywołania biblioteki, które powoduje błąd i znak nowego wiersza.Ciąg wiadomości może mieć co najwyżej 94 znaki długości.
Te funkcje przerywają komunikat o błędzie, jeśli jego rozmiar przekracza numberOfElements -1.Wynikowy ciąg w buffer zawsze jest zakończony znakiem null.
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óra jest tablicą wiadomości według wielkości błędu._strerror_s uzyskuje dostęp do odpowiedniego komunikatu błędu za pomocą wartości errno jako indeksu do zmiennej _sys_errlist.Wartość zmiennej _sys_nerr jest zdefiniowana jako maksymalna liczba elementów w _sys_errlist tablicy.Aby wygenerować dokładne wyniki, wywołanie _strerror_s natychmiast po procedurze biblioteki zwraca błąd.Inaczej, kolejne wywołania strerror_s lub _strerror_s można zastąpić errno wartość.
_wcserror_si __wcserror_ssą wersją znaków dwubajtowych, odpowiednio strerror_si _strerror_s.
Te funkcje sprawdzają poprawność swoich parametrów.Jeśli bufor to NULL lub rozmiar parametru to 0, zostanie wywołana procedura obsługi nieprawidłowego parametru, zgodnie z opisem w temacie Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, funkcje zwracają EINVAL i ustawiają errno jako EINVAL.
_strerror_s, _wcserror_s, i __wcserror_s nie są częścią definicji ANSI, ale w zamian są rozszerzeniami Microsoft do niej.Nie używaj ich tam, gdzie przenoszenie jest pożądane; dla zgodności ANSI, użyj strerror_s w zamian.
W języku C++, korzystanie z tych funkcji jest uproszczone przez przeciążenia szablonu; przeciążenia mogą automatycznie wydedukować długość buforu, eliminując konieczność określenia argumentu rozmiaru.Aby uzyskać więcej informacji, zobacz Przeciążenia bezpiecznych szablonów.
Wersje debugowania tych funkcji najpierw wypełniają bufor 0xFD.Aby wyłączyć to zachowanie, użyj _CrtSetDebugFillThreshold.
Rutynowe mapowania zwykłego tekstu
Procedura Tchar.h |
_UNICODE & _MBCS nie zdefiniowano |
_MBCS zdefiniowano |
_UNICODE zdefiniowany |
---|---|---|---|
_tcserror_s |
strerror_s |
strerror_s |
_wcserror_s |
Wymagania
Procedura |
Wymagany nagłówek |
---|---|
strerror_s, _strerror_s |
<Ciąg> |
_wcserror_s, __wcserror_s |
<ciągo.h> lub <wchar.h> |
Dodatkowe informacje o zgodności – zobacz: Zgodność we Wprowadzeniu.
Przykład
Zobacz przykład perror.