strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_lstrlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l

현재 로캘 또는 지정된 로캘을 사용하여 문자열의 길이를 가져옵니다.Gets the length of a string, by using the current locale or a specified locale. 이러한 함수의 더 안전한 버전을 사용할 수 있습니다. strnlen, strnlen_s, wcsnlen, wcsnlen_s, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l을 참조하세요.More secure versions of these functions are available; see strnlen, strnlen_s, wcsnlen, wcsnlen_s, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l


_mbslen, _mbslen_l, _mbstrlen, 및 _mbstrlen_l 는 Windows 런타임에서 실행 되는 응용 프로그램에서 사용할 수 없습니다._mbslen, _mbslen_l, _mbstrlen, and _mbstrlen_l cannot be used in applications that execute in the Windows Runtime. 자세한 내용은 유니버설 Windows 플랫폼 앱에서 지원되지 않는 CRT 함수를 참조하세요.For more information, see CRT functions not supported in Universal Windows Platform apps.


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

매개 변수Parameters

Null 종료 문자열입니다.Null-terminated string.

사용할 로캘입니다.Locale to use.

반환 값Return Value

이러한 각 함수에 있는 문자의 수를 반환 str, 터미널 null을 제외 합니다.Each of these functions returns the number of characters in str, excluding the terminal null. 반환 값 없음은 제외 하 고 오류를 나타내는 데 예약 되어 _mbstrlen_mbstrlen_l를 반환 하는 ((size_t)(-1)) 문자열에 잘못 된 멀티 바이트 문자가 포함 되어 있습니다.No return value is reserved to indicate an error, except for _mbstrlen and _mbstrlen_l, which return ((size_t)(-1)) if the string contains an invalid multibyte character.


strlen 단일 바이트 문자 문자열로 문자열을 해석 하므로 문자열 멀티 바이트 문자를 포함 하는 경우에 해당 반환 값은 항상 바이트의 수와 같습니다.strlen interprets the string as a single-byte character string, so its return value is always equal to the number of bytes, even if the string contains multibyte characters. wcslen 의 와이드 문자 버전이 strlen;의 인수 wcslen 는 와이드 문자열이 고 문자 수는 와이드 (2 바이트) 문자로 계산 합니다.wcslen is a wide-character version of strlen; the argument of wcslen is a wide-character string and the count of characters is in wide (two-byte) characters. wcslenstrlen 동일 하 게 작동 합니다.wcslen and strlen behave identically otherwise.

보안 정보 이러한 함수는 버퍼 오버런 문제로 인해 발생하는 잠재적인 위협을 일으킵니다.Security Note These functions incur a potential threat brought about by a buffer overrun problem. 버퍼 오버런 문제는 자주 사용되는 시스템 공격 방법으로, 불필요한 권한 상승을 초래합니다.Buffer overrun problems are a frequent method of system attack, resulting in an unwarranted elevation of privilege. 자세한 내용은 버퍼 오버런 방지를 참조하세요.For more information, see Avoiding Buffer Overruns.

제네릭 텍스트 라우팅 매핑Generic-Text Routine Mappings

TCHAR.H 루틴TCHAR.H routine _UNICODE 및 _MBCS 정의되지 않음_UNICODE & _MBCS not defined _MBCS 정의됨_MBCS defined _UNICODE 정의됨_UNICODE defined
_tcslen_tcslen strlenstrlen strlenstrlen wcslenwcslen
_tcsclen_tcsclen strlenstrlen _mbslen_mbslen wcslenwcslen
_tcsclen_l_tcsclen_l strlenstrlen _mbslen_l_mbslen_l wcslenwcslen

_mbslen_mbslen_l 멀티 바이트 문자열의 멀티 바이트 문자 수를 반환 하지만 멀티 바이트 문자의 유효성을 테스트 하지는 않습니다._mbslen and _mbslen_l return the number of multibyte characters in a multibyte-character string but they do not test for multibyte-character validity. _mbstrlen_mbstrlen_l 멀티 바이트 문자의 유효성을 테스트 하 고 멀티 바이트 문자 시퀀스를 인식 합니다._mbstrlen and _mbstrlen_l test for multibyte-character validity and recognize multibyte-character sequences. 에 전달 된 문자열이 _mbstrlen 또는 _mbstrlen_l 에 잘못 된 문자가 멀티 바이트 코드 페이지, 함수 반환 값-1 및 집합에 대 한 errnoEILSEQ합니다.If the string passed to _mbstrlen or _mbstrlen_l contains an invalid multibyte character for the code page, the function returns -1 and sets errno to EILSEQ.

출력 값은 로캘의 LC_CTYPE 범주 설정에 따른 영향을 받습니다. 자세한 내용은 setlocale을 참조하세요.The output value is affected by the setting of the LC_CTYPE category setting of the locale; see setlocale for more information. _l 접미사가 없는 이러한 함수 버전은 이 로캘 종속 동작에 현재 로캘을 사용하며, _l 접미사가 있는 버전은 전달된 로캘 매개 변수를 대신 사용하는 경우를 제외하고는 동일합니다.The versions of these functions without the _l suffix use the current locale for this locale-dependent behavior; the versions with the _l suffix are identical except that they use the locale parameter passed in instead. 자세한 내용은 Locale을 참조하세요.For more information, see Locale.

요구 사항Requirements

루틴Routine 필수 헤더Required header
strlenstrlen <string.h><string.h>
wcslenwcslen <string.h> 또는 <wchar.h><string.h> or <wchar.h>
_mbslen, _mbslen_l_mbslen, _mbslen_l <mbstring.h><mbstring.h>
_mbstrlen, _mbstrlen_l_mbstrlen, _mbstrlen_l <stdlib.h><stdlib.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.For additional compatibility information, see Compatibility.


// 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");
      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

참고자료See also

문자열 조작String Manipulation
멀티바이트 문자 시퀀스 해석Interpretation of Multibyte-Character Sequences
setlocale, _wsetlocalesetlocale, _wsetlocale
strcat, wcscat, _mbscatstrcat, wcscat, _mbscat
strcmp, wcscmp, _mbscmpstrcmp, wcscmp, _mbscmp
strcoll 함수strcoll Functions
strcpy, wcscpy, _mbscpystrcpy, wcscpy, _mbscpy
strrchr, wcsrchr, _mbsrchr, _mbsrchr_lstrrchr, wcsrchr, _mbsrchr, _mbsrchr_l
_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l
strspn, wcsspn, _mbsspn, _mbsspn_lstrspn, wcsspn, _mbsspn, _mbsspn_l