strnlen, strnlen_s, strnlen_l, wcsnlen, wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l
Získá délku řetězce pomocí aktuální národní prostředí nebo ten, který byl předán v.Jedná se o bezpečnější verzích strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l.
Důležité |
---|
_mbsnlen, _mbsnlen_l, _mbstrnlen, a _mbstrnlen_l nelze použít v aplikacích, které jsou spuštěny v prostředí Windows Runtime.Další informace naleznete v tématu CRT funkce nepodporované s /ZW. |
size_t strnlen( const char *str, size_t numberOfElements ); size_t strnlen_s( const char *str, size_t numberOfElements ); size_t wcsnlen( const wchar_t *str, size_t numberOfElements ); size_t wcsnlen_s( const wchar_t *str, size_t numberOfElements ); size_t _mbsnlen( const unsigned char *str, size_t numberOfElements ); size_t _mbsnlen_l( const unsigned char *str, size_t numberOfElements, _locale_t locale ); size_t _mbstrnlen( const char *str, size_t numberOfElements ); size_t _mbstrnlen_l( const char *str, size_t numberOfElements, _locale_t locale );
Parametry
str
Řetězec ukončený hodnotou Null.numberOfElements
Velikost vyrovnávací paměti řetězec.locale
Národní prostředí má použít.
Vrácená hodnota
Tyto funkce vracejí počet znaků v řetězci, nikoli včetně ukončující znak null.Pokud není žádná hodnota null ukončení v rámci první numberOfElements bajtů řetězce (nebo široké znaky pro wcsnlen), pak numberOfElements je vrácen označuje chybový stav; řetězců ukončený hodnotou Null mít délku, které jsou nezbytně menší než numberOfElements.
_mbstrnlena _mbstrnlen_l vrátit hodnotu -1, pokud řetězec obsahuje neplatný znak více.
Poznámky
[!POZNÁMKA]
strnlennení k nahrazení strlen; strnlen je určen k použití pouze k výpočtu velikosti příchozí nedůvěryhodných dat do vyrovnávací paměti známé velikosti – například síťové pakety.strnlenVypočítá délku, ale není ukázat za konec vyrovnávací paměti, pokud je nalezen neukončený řetězec.Pro další situace, použijte strlen.(Platí i pro wcsnlen, _mbsnlen, a _mbstrnlen.)
Každá z těchto funkcí vrátí počet znaků v str, nikoli včetně ukončující znak null.Však strnlen a strnlen_s interpretaci řetězec jako řetězec znaků jednoho bajtu a proto vrácená hodnota je vždy rovná počet bajtů, i v případě, že řetězec obsahuje středník.wcsnlena wcsnlen_s jsou verze širokého znaku strnlen a strnlen_s ; argumenty pro wcsnlen a wcsnlen_s jsou řetězci širokého znaku a počet znaků v celém znakové jednotky.V opačném wcsnlen a strnlen chovat stejně, stejně jako strnlen_s a wcsnlen_s.
strnlen, wcsnlen, a _mbsnlen nelze ověřit jejich parametry.Pokud str je NULL, dojde k porušení přístupu.
strnlen_sa wcsnlen_s ověření jejich parametrů.Pokud str je NULL, funkce vrátí 0.
_mbstrnlenověřuje také jejích parametrů.Pokud str je NULL, nebo pokud numberOfElements je větší než INT_MAX, _mbstrnlen vygeneruje výjimku neplatný parametr, jak je popsáno v Ověření parametru.Pokud chcete-li pokračovat, je povoleno zpracování _mbstrnlen nastaví errno k EINVAL a vrátí hodnotu -1.
Mapování rutin obecného textu
Rutina TCHAR.H |
_UNICODE & _MBCS není definována. |
_MBCS definováno |
_UNICODE definováno |
---|---|---|---|
_tcsnlen |
strnlen |
strnlen |
wcsnlen |
_tcscnlen |
strnlen |
_mbsnlen |
wcsnlen |
_tcscnlen_l |
strnlen |
_mbsnlen_l |
wcsnlen |
_mbsnlena _mbstrnlen vrácení počtu středník multibajtové znakové řetězce._mbsnlenrozpozná multibajtové znakové pořadí podle více znakovou stránku, která je aktuálně používán nebo podle národní prostředí, která je předána je testování multibajtové znakové platnost._mbstrnlenověří platnost multibajtové znakové a rozpozná vícebajtové znakové sekvence.Pokud řetězec, který je předán _mbstrnlen obsahuje neplatný znak více, errno je nastavena na EILSEQ.
Výstupní hodnota nastavení má vliv LC_CTYPE kategorie nastavení národního prostředí; Podívejte se na téma setlocale, _wsetlocale Další informace.Verze pro tyto funkce jsou identické, s tím rozdílem, že ty počítače, který není mít _l přípona použít aktuální národní prostředí pro toto chování závislé na národní prostředí a verze, které mají _l přípona místo toho použít parametr národní prostředí, který je předán v.Další informace naleznete v tématu Národní prostředí.
Požadavky
Rutina |
Požadovaný hlavičkový soubor |
---|---|
strnlen, strnlen_s |
< string.h > |
wcsnlen, wcsnlen_s |
< string.h > nebo < wchar.h > |
_mbsnlen, _mbsnlen_l |
< mbstring.h > |
_mbstrnlen, _mbstrnlen_l |
< stdlib.h > |
Další informace o kompatibilitě, naleznete v části Kompatibilita.
Příklad
// crt_strnlen.c
#include <string.h>
int main()
{
// str1 is 82 characters long. str2 is 159 characters long
char* str1 = "The length of a string is the number of characters\n"
"excluding the terminating null.";
char* str2 = "strnlen takes a maximum size. If the string is longer\n"
"than the maximum size specified, the maximum size is\n"
"returned rather than the actual size of the string.";
size_t len;
size_t maxsize = 100;
len = strnlen(str1, maxsize);
printf("%s\n Length: %d \n\n", str1, len);
len = strnlen(str2, maxsize);
printf("%s\n Length: %d \n", str2, len);
}
Ekvivalent v rozhraní .NET Framework
Viz také
Referenční dokumentace
Výklad sekvencí vícebajtových znaků
strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l