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 jeden, který byl předán v.Jedná se o bezpečnější verze 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 Windows Runtime.Další informace naleznete v tématu CRT funkce nejsou podporovány s /ZW.

size_t strnlen(
   const char *str,
   size_t numberOfElements 
);
size_t strnlen_s(
   const char *str,
   size_t numberOfElements 
);
size_t strnlen_l(
   const char *str,
   size_t numberOfElements,
   _locale_t locale
);
size_t wcsnlen(
   const wchar_t *str,
   size_t numberOfElements
);
size_t wcsnlen_s(
   const wchar_t *str,
   size_t numberOfElements
);
size_t wcsnlen_l(
   const wchar_t *str,
   size_t numberOfElements,
   _locale_t locale
);
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 zakončený hodnotou Null.

  • numberOfElements
    Velikost vyrovnávací paměti řetězců.

  • locale
    Chcete-li národní prostředí pro použití.

Vrácená hodnota

Tyto funkce vrácení počtu znaků v řetězci, nikoli včetně ukončující znak null.Pokud není null zakončení v rámci první numberOfElements bajtů řetězce (nebo široké znaky pro wcsnlen), pak numberOfElements je vrácena označují chybový stav; jsou řetězce zakončené znakem null délek, které jsou nezbytně menší než numberOfElements.

_mbstrnlena _mbstrnlen_l vrátí -1, pokud řetězec obsahuje neplatný vícebajtové znakové.

Poznámky

[!POZNÁMKA]

strnlennení náhradou za strlen; strnlenje určen pro použití pouze pro výpočet velikosti příchozí nedůvěryhodná data ve vyrovnávací paměti známé velikosti – například síťový paket.strnlenVypočítá délku, ale není projít za konec vyrovnávací paměti, pokud je nalezen neukončený řetězec.V jiných situacích použít strlen.(The same applies to wcsnlen, _mbsnlen, and _mbstrnlen.)

Každá z těchto funkcí vrací počet znaků v str, ne včetně ukončující znak null.Nicméně strnlen a strnlen_l interpretace řetězce jako jednobajtové znakové řetězce, a proto, vrácená hodnota je vždy rovna počtu bajtů, i v případě, že řetězec obsahuje vícebajtové znaky.wcsnlena wcsnlen_l jsou verze širokého znaku strnlen a strnlen_l ; argumenty pro wcsnlen a wcsnlen_l jsou řetězci širokého znaku a počet znaků v jednotkách širokého znaku.Otherwise, wcsnlen, wcsnlen_l, strnlen and strnlen_l behave identically.

strnlen, wcsnlen, a _mbsnlen nelze ověřit jejich parametry.Pokud str je NULL, dochází k narušení přístupu.

strnlen_sa wcsnlen_s ověřit jejich parametry.Pokud str je NULL, funkce vrátí 0.

_mbstrnlenověřuje také jeho parametry.Pokud str je NULL, nebo -li numberOfElements je větší než INT_MAX, _mbstrnlen generuje výjimku neplatného parametru, jak je popsáno v Ověření parametrů.Je-li pokračovat, je povoleno zpracování _mbstrnlen nastaví errno na EINVAL a vrátí hodnotu -1.

Mapování rutiny obecného textu

TCHAR.Byla zahájena rutina h

_UNICODE & _MBCS není definováno

_MBCS, definice

_UNICODE definována

_tcsnlen

strnlen

strnlen

wcsnlen

_tcscnlen

strnlen

_mbsnlen

wcsnlen

_tcscnlen_l

strnlen_l

_mbsnlen_l

wcsnlen_l

_mbsnlena _mbstrnlen vrácení počtu vícebajtových znaků vícebajtové znakové řetězce._mbsnlenrozpozná vícebajtové znakové sekvence podle vícebajtovou znakovou stránku, která je aktuálně používán nebo podle národního prostředí, které jsou předány v; netestuje platnost vícebajtových znaků._mbstrnlenověří platnost vícebajtové znakové a rozpozná vícebajtové znakové sekvence.Pokud řetězec, který je předán do _mbstrnlen obsahuje neplatný vícebajtové znakové errno je nastavena na EILSEQ.

Výstupní hodnota je ovlivněna nastavením LC_CTYPE kategorie nastavení národního prostředí; Viz setlocale _wsetlocale Další informace.Verze tyto funkce jsou stejné, s tím rozdílem, že ty, které nechcete mít _l příponu použít aktuální národní prostředí pro toto chování závislé na národním prostředí a verze, které mají _l přípony, použijte parametr locale, který je předaný v.Další informace naleznete v tématu Národní prostředí.

Požadavky

Byla zahájena rutina

Požadované záhlaví

strnlen, strnlen_s, strnlen_l

<string.h>

wcsnlen, wcsnlen_s, wcsnlen_l

<string.h> nebo <wchar.h>

_mbsnlen, _mbsnlen_l

<mbstring.h>

_mbstrnlen, _mbstrnlen_l

<stdlib.h>

Další informace o kompatibilitě, viz 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

Manipulaci s řetězci (CRT)

Národní prostředí

Výklad vícebajtové znakové sekvence

setlocale _wsetlocale

strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

Funkce strcoll

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