strlen
, wcslen
, _mbslen
, _mbslen_l
, _mbstrlen
, _mbstrlen_l
Mendapatkan panjang string, dengan menggunakan lokal saat ini atau lokal tertentu. Versi yang lebih aman dari fungsi-fungsi ini tersedia; lihat strnlen
, , wcsnlen
strnlen_s
, wcsnlen_s
, _mbsnlen
, _mbsnlen_l
, , _mbstrnlen
,_mbstrnlen_l
Penting
_mbslen
, , _mbslen_l
_mbstrlen
, dan _mbstrlen_l
tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime. Untuk informasi selengkapnya, lihat Fungsi CRT yang tidak didukung di aplikasi Platform Windows Universal.
Sintaks
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
);
Parameter
str
Untai (karakter) null-terminated.
locale
Lokal untuk digunakan.
Nilai hasil
Masing-masing fungsi ini mengembalikan jumlah karakter dalam str
, tidak termasuk terminal null. Tidak ada nilai pengembalian yang dicadangkan untuk menunjukkan kesalahan, kecuali dan _mbstrlen
_mbstrlen_l
, yang mengembalikan ((size_t)(-1))
jika string berisi karakter multibyte yang tidak valid.
Keterangan
strlen
menginterpretasikan string sebagai string karakter byte tunggal, sehingga nilai pengembaliannya selalu sama dengan jumlah byte, bahkan jika string berisi karakter multibyte. wcslen
adalah versi strlen
karakter lebar ; argumen dari wcslen
adalah string karakter lebar dan jumlah karakter dalam karakter lebar (dua byte). wcslen
dan strlen
berulah secara identik jika tidak.
Catatan Keamanan Fungsi-fungsi ini menimbulkan potensi ancaman yang dibawa oleh masalah buffer overrun. Masalah buffer overrun adalah metode serangan sistem yang sering, yang mengakibatkan peningkatan hak istimewa yang tidak beralasan. Untuk informasi selengkapnya, lihat Menghindari overruns buffer.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Pemetaan rutin teks generik
TCHAR.H Rutin |
_UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tcslen |
strlen |
strlen |
wcslen |
_tcsclen |
strlen |
_mbslen |
wcslen |
_tcsclen_l |
strlen |
_mbslen_l |
wcslen |
_mbslen
dan _mbslen_l
mengembalikan jumlah karakter multibyte dalam string multibyte-character tetapi tidak menguji validitas karakter multibyte. _mbstrlen
dan _mbstrlen_l
uji validitas karakter multibyte dan kenali urutan karakter multibyte. Jika string diteruskan ke _mbstrlen
atau _mbstrlen_l
berisi karakter multibyte yang tidak valid untuk halaman kode, fungsi mengembalikan -1 dan diatur errno
ke EILSEQ
.
Nilai output dipengaruhi oleh pengaturan LC_CTYPE
pengaturan kategori lokal. Untuk informasi selengkapnya, lihat setlocale
. Versi fungsi-fungsi ini tanpa _l
akhiran menggunakan lokal saat ini untuk perilaku tergantung lokal ini; versi dengan _l
akhiran identik kecuali bahwa mereka menggunakan parameter lokal yang diteruskan sebagai gantinya. Untuk informasi selengkapnya, lihat Lokal.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
strlen |
<string.h> |
wcslen |
<string.h> atau <wchar.h> |
_mbslen , _mbslen_l |
<mbstring.h> |
_mbstrlen , _mbstrlen_l |
<stdlib.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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) );
// wcslen 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) );
}
Length of 'Count.' : 6
Length of 'Count.' : 6
Length of 'ABCァD' : 5
Length of 'ABCァD' : 5
Bytes in 'ABCァD' : 6
Baca juga
Manipulasi string
Interpretasi urutan karakter multibyte
Lokal
setlocale
, _wsetlocale
strcat
, wcscat
, _mbscat
strcmp
, wcscmp
, _mbscmp
strcoll
Fungsi
strcpy
, wcscpy
, _mbscpy
strrchr
, wcsrchr
, _mbsrchr
, _mbsrchr_l
_strset
, _strset_l
, _wcsset
, _wcsset_l
, _mbsset
, _mbsset_l
strspn
, wcsspn
, _mbsspn
, _mbsspn_l
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk