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

Geçerli yerel veya belirtilen yerel kullanarak bir dizenin uzunluğunu alır.Bu işlevler daha güvenli sürümlerini kullanılabilir; bakınstrnlen, 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 /ZW ile desteklenmiyor CRT işlevleri.

size_t strlen(    const char *str ); size_t wcslen(    const wchar_t *str  ); 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
    Sonlandırılmış dize.

  • locale
    Kullanılacak yerel ayar.

Dönüş Değeri

Bu işlevlerin her karakter sayısını döndürür str, terminal hariç NULL.Dönüş değeri yok dışında bir hata olduğunu belirtmek için ayrılmıştır _mbstrlen ve _mbstrlen_l, hangi return ((size_t)(-1)) dize çoklu bayt geçersiz bir karakter içeriyorsa.

Notlar

strlençoklu bayt karakter dizesini içeren olsa bile dönüş değerini her zaman için bayt cinsinden sayısına eşit olacak şekilde bir dizeyi bir tek bayt karakter dizisi olarak yorumlar.wcslengeniş karakter sürümüdür strlen; bağımsız değişkeni wcslen geniş karakter dizesi ve wide (iki bayt) karakterdir karakter sayısı.Aksi takdirde, wcslen ve strlen aynı şekilde davranır.

Güvenlik Notu bu işlevler taşması sorundan duruma olası bir tehdit tabi.Taşması sorunlar unwarranted bir ayrıcalık içinde kaynaklanan sistem saldırı, sık kullanılan bir yöntemdir.Daha fazla bilgi için, bkz. Arabellek Taşmalarını Önleme.

Genel Metin Yordam Eşleşmeleri

TCHAR.H yordamı

_UNICODE & _MBCS tanımlanmamış

_MBCS tanımlanmış

_UNICODE tanımlanmış

_tcslen

strlen

strlen

wcslen

_tcsclen

strlen

_mbslen

wcslen

_tcsclen_l

strlen

_mbslen_l

wcslen

_mbslenve _mbslen_l çok baytlı karakter geçerlilik için test değil ancak çok baytlı karakter dizesi içinde çoklu bayt karakter sayısını döndürür._mbstrlenve _mbstrlen_l sınamak için çok baytlı karakter geçerlilik ve çok baytlı karakter sıraları tanımak.Dize için iletilmezse _mbstrlen veya _mbstrlen_l kod sayfası, -1 işlevi döndürür ve ayarlar için çoklu bayt geçersiz bir karakter içeriyor errno için EILSEQ.

Çıkış değeri ayarı tarafından etkilenen LC_CTYPE kategori ayarı yerel bölge; bakın setlocale daha fazla bilgi için.Bu işlevler sürümlerini _l soneki geçerli yerel bu yerel ayar-bağımlı davranış için kullanın sürümlerle _l yerine geçirilen yerel ayar parametresi kullanmasını dışında soneki özdeş.Daha fazla bilgi için bkz. Yerel Ayar.

Gereksinimler

Yordam

Gerekli başlık

strlen

< string.h >

wcslen

< string.h > veya < wchar.h >

_mbslen, _mbslen_l

< mbstring.h >

_mbstrlen, _mbstrlen_l

< stdlib.h >

Uyumluluk ek bilgi için bkz Uyumluluk.

Ö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 Düzenlemesi (CRT)

Çok Baytlı Karakter Sıralarının Yorumu

Yerel Ayar

setlocale, _wsetlocale

strcat, wcscat, _mbscat

strcmp, wcscmp, _mbscmp

strcoll İşlevleri

strcpy, wcscpy, _mbscpy

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l