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
_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
Ayrıca bkz.
Başvuru
Yorumunu çok baytlı karakter dizileri
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l