Udostępnij za pośrednictwem


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.

Odpowiednik w programie .NET Framework

Komunikat wyjątku systemu

Zobacz też

Informacje

Manipulowanie ciągami (CRT)

clearerr

ferror

perror, _wperror