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.