Sdílet prostřednictvím


strerror_s, _strerror_s, _wcserror_s, __wcserror_s

Získat chybovou zprávu systému (strerror_s, _wcserror_s) nebo vytisknout uživatelem zadanou chybovou zprávu (_strerror_s, __wcserror_s).Tyto verze strerror, _strerror, _wcserror, __wcserror s rozšířeními zabezpečení jsou popsány v tématu Funkce zabezpečení v 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
    Vyrovnávací paměť pro uložení řetězce chyb.

  • numberOfElements
    Velikost vyrovnávací paměti.

  • errnum
    Číslo chyby.

  • strErrMsg
    Zpráva zadaná uživatelem.

Vrácená hodnota

Nula v případě úspěchu; při selhání kód chyby.

Chybové podmínky

buffer

numberOfElements

strErrMsg

Obsah buffer

NULL

any

any

není k dispozici

any

0

any

nezměněno

Poznámky

Funkce strerror_s mapuje errnum na řetězec chybové zprávy a vrací řetězec do buffer._strerror_s nepřevezme číslo chyby; používá aktuální hodnotu errno k určení příslušné zprávy.Ani strerror_s, ani _strerror_s ve skutečnosti zprávu nevytiskne: proto je nutné zavolat výstupní funkci, např. fprintf:

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

Pokud strErrMsg je NULL, _strerror_s vrátí řetězec v buffer obsahující chybovou zprávu systému pro poslední volání knihovny, které vytvořilo chybu.Řetězec chybové zprávy je ukončen znakem nového řádku ('\n').Pokud strErrMsg není roven NULL, pak _strerror_s vrátí řetězec v buffer obsahující (v pořadí) zprávu řetězce, dvojtečku, mezeru, chybovou zprávu systému pro poslední volání knihovny, které vytvořilo chybu, a znak nového řádku.Vaše řetězcová zpráva může mít nanejvýš 94 znaků.

Tyto funkce zkrátí chybovou zprávu, pokud její délka přesahuje numberOfElements -1.Výsledný řetězec v buffer je vždy zakončený hodnotou null.

Aktuální číslo chyby pro _strerror_s je uloženo v proměnné errno.Chybové zprávy systému jsou přístupné prostřednictvím proměnné _sys_errlist, což je pole zpráv seřazené podle čísla chyby._strerror_s přistupuje k příslušné chybové zprávě pomocí hodnoty errno jako indexu proměnné _sys_errlist.Hodnota proměnné _sys_nerr je definována jako maximální počet prvků v poli _sys_errlist.Pro přesné výsledky zavolejte _strerror_s ihned poté, co knihovní rutina vrátí chybu.Jinak následná volání strerror_s nebo _strerror_s mohou přepsat hodnotu errno.

_wcserror_sa __wcserror_sjsou širokoznaké verze strerror_sa _strerror_s v tomto pořadí.

Tyto funkce ověřují své parametry.Pokud je vyrovnávací paměť NULL nebo pokud je parametr velikosti 0, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v tématu Ověření parametru.Pokud provádění může pokračovat, vrátí funkce EINVAL a nastaví errno na EINVAL.

_strerror_s, _wcserror_s, a __wcserror_s nejsou součástí definice ANSI, ale místo toho jsou jejími rozšířeními Microsoft.Nepoužívejte je tam, kde je žádoucí přenositelnost; z důvodu kompatibility s ANSI místo toho použijte strerror_s .

V jazyce C++ je použití těchto funkcí zjednodušeno díky přetížením šablony; přetížení mohou odvodit délku vyrovnávací paměti automaticky, čímž eliminují nutnost určit velikost argumentu.Další informace naleznete v tématu Přetížení zabezpečení šablony.

Ladicí verze těchto funkcí nejprve naplní vyrovnávací paměť hodnotou 0xFD.Chcete-li zakázat toto chování, použijte _CrtSetDebugFillThreshold.

Rutinní mapování obecného textu

Rutina TCHAR.H

_UNICODE & _MBCS není definováno

_MBCS definováno

_UNICODE definováno

_tcserror_s

strerror_s

strerror_s

_wcserror_s

Požadavky

Rutina

Požadované záhlaví

strerror_s, _strerror_s

<string.h>

_wcserror_s, __wcserror_s

<string.h> nebo <wchar.h>

Další informace o kompatibilitě naleznete v úvodu tématu Kompatibilita.

Příklad

Viz příklad perror.

Ekvivalent v rozhraní .NET Framework

System::Exception::Message

Viz také

Referenční dokumentace

Zacházení s řetězci (CRT)

clearerr

ferror

perror, _wperror