Aracılığıyla paylaş


strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l

Geçerli yerel ayarı veya belirtilen yerel ayar kullanarak bir dize uzunluğunu alın.Bu işlevlerin daha güvenli sürümlerinde kullanılabilir; bkz.strnlen, strnlen_s, strnlen_l, wcsnlen, wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l

Önemli notÖnemli

_mbslen, _mbslen_l, _mbstrlen, ve _mbstrlen_l Windows çalışma zamanı yürütme uygulamalarda kullanılamaz.Daha fazla bilgi için bkz: /zw ile desteklenmeyen crt işlevlerinin.

size_t strlen(
   const char *str
);
size_t strlen_l(
   const char *str,
   _locale_t locale 
);
size_t wcslen(
   const wchar_t *str 
);
size_t wcslen_l(
   const wchar_t *str,
   _locale_t locale
);
size_t _mbslen(
   const unsigned char *str 
);
size_t _mbslen_l(
   const unsigned char *str,
   _locale_t locale
);
size_t _mbstrlen(
   const char *str
);
size_t _mbstrlen_l(
   const char *str,
   _locale_t locale
);

Parametreler

  • str
    NULL sonlandırılmış bir dize.

  • locale
    Kullanılacak yerel ayarı.

Dönüş Değeri

Bu işlevlerden her biri karakter sayısını verir str, terminal hariç NULL.Dönüş değeri yok dışında bir hata göstermek için ayrılmış _mbstrlen, döndüren ((size_t)(-1)) geçersiz bir çok baytlı karakter dizesi içeriyorsa.

Notlar

strlençok baytlı karakter dizesi içeriyor olsa da, onun dönüş değeri her zaman için bayt sayısına eşit olacak şekilde bir dizeyi, tek baytlı karakter dizesi olarak yorumlar.wcslengeniş karakter sürümü strlen; baðýmsýz wcslen bir geniş karakter dizesi ise ve geniş (iki bayt) karakterleri karakter sayısıdır.wcslenve strlen Aksi takdirde aynı şekilde davranır.

Güvenlik notu duruma göre bir arabellek taşması sorunu potansiyel bir tehlike bu işlevleri tabi.Arabellek taşması sorunları sistem saldırı, içinde unwarranted bir ayrıcalık yükselmesine neden sık kullanılan bir yöntemdir.Daha fazla bilgi için bkz: Kaçınma arabelleğin taşmasına neden.

Genel metin eşlemeleri yordamına girildi

TCHAR.H yordamına girildi

_UNICODE & _mbcs tanımlanmamış

Tanımlanan _mbcs

Tanımlanan _UNICODE

_tcslen

strlen

strlen

wcslen

_tcsclen

strlen

_mbslen

wcslen

_tcsclen_l

strlen_l

_mbslen_l

wcslen_l

_mbslen,_mbslen_l, _mbstrlen ve _mbstrlen_l için çok baytlı karakter geçerliliğini test değil ancak bir çok baytlı karakter dizesi çok baytlı karakter sayısını döndürür._mbstrlenve _mbstrlen_l için çok baytlı karakter geçerliliğini sınar ve çok baytlı karakter dizilerini tanırsetlocale, _wsetlocale.Geçirilen dize, _mbstrlen veya _mbstrlen_l verdiği çok baytlı kod sayfası geçersiz karakter içeren kümeleri ve -1 errno için EILSEQ.

Çıkış değeri ayarı tarafından etkilenen LC_CTYPE ; bölgesel ayar kategorisi bkz: setlocale daha fazla bilgi için.Bu işlevler sürümlerini _l soneki kullanan geçerli yerel ayarı için bu yerel ayara bağımlı davranışı; sürümleri ile _l sonek dışında bunun yerine geçirilen yerel ayar parametresi kullandıkları aynı.Daha fazla bilgi için bkz. Yerel ayar.

Gereksinimler

Yordamı

Gerekli başlık

strlen

<string.h>

strlen_l

<string.h>

wcslen, wcslen_l

<string.h> veya <wchar.h>

_mbslen, _mbslen_l

<mbstring.h>

_mbstrlen, _mbstrlen_l

<stdlib.h>

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

// crt_strlen.c
// Determine the length of a string. For the multi-byte character
// example to work correctly, the Japanese language support for
// non-Unicode programs must be enabled by the operating system.


#include <string.h>
#include <locale.h>

int main()
{
   char* str1 = "Count.";
   wchar_t* wstr1 = L"Count.";
   char * mbstr1;
   char * locale_string;

   // strlen gives the length of single-byte character string
   printf("Length of '%s' : %d\n", str1, strlen(str1) );

   // wstrlen gives the length of a wide character string
   wprintf(L"Length of '%s' : %d\n", wstr1, wcslen(wstr1) );

   // A multibyte string: [A] [B] [C] [katakana A] [D] [\0]
   // in Code Page 932. For this example to work correctly,
   // the Japanese language support must be enabled by the
   // operating system.
   mbstr1 = "ABC" "\x83\x40" "D";

   locale_string = setlocale(LC_CTYPE, "Japanese_Japan");

   if (locale_string == NULL)
   {
      printf("Japanese locale not enabled. Exiting.\n");
      exit(1);
   }
   else
   {
      printf("Locale set to %s\n", locale_string);
   }

   // _mbslen will recognize the Japanese multibyte character if the
   // current locale used by the operating system is Japanese
   printf("Length of '%s' : %d\n", mbstr1, _mbslen(mbstr1) );

   // _mbstrlen will recognize the Japanese multibyte character
   // since the CRT locale is set to Japanese even if the OS locale
   // isnot. 
   printf("Length of '%s' : %d\n", mbstr1, _mbstrlen(mbstr1) );
   printf("Bytes in '%s' : %d\n", mbstr1, strlen(mbstr1) );   
  
}
  

.NET Framework Eşdeğeri

System::string::length

Ayrıca bkz.

Başvuru

Dize işlemleri (crt)

Yorumunu çok baytlı karakter dizileri

Yerel ayar

setlocale, _wsetlocale

strcat wcscat, _mbscat

strcmp wcscmp, _mbscmp

strcoll işlevleri

strcpy, wcscpy, _mbscpy

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l