Sdílet prostřednictvím


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á poznámkaDů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

System::String::length

Viz také

Referenční dokumentace

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

Národní prostředí

Výklad sekvencí vícebajtových znaků

setlocale, _wsetlocale

strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

strcoll – funkce

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l