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

현재 로캘 또는 지정 된 로케일을 사용 하 여 문자열의 길이 가져옵니다.보다 안전한 버전의이 함수를 사용할 수 있습니다. 참조strnlen, strnlen_s, strnlen_l, wcsnlen, wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l

중요중요

_mbslen_mbslen_l, _mbstrlen, 및 _mbstrlen_l Windows 런타임에서 실행 되는 응용 프로그램에서 사용할 수 없습니다.자세한 내용은 /zw에 지원 되는 CRT 함수.

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

매개 변수

  • str
    Null로 끝나는 문자열입니다.

  • locale
    사용 하는 로캘.

반환 값

각이 함수에서 문자 수가 반환 str를 제외 하 고 터미널 NULL.반환 값을 제외 하 고 오류를 나타내기 위해 예약 되어 _mbstrlen, 반환 ((size_t)(-1)) 문자열에 잘못 된 멀티 바이트 문자가 포함 되어 있습니다.

설명

strlen멀티 바이트 문자 문자열을 포함 하는 경우에 반환 값의 바이트 수와 같고 하므로 항상 문자열은 싱글 바이트 문자 문자열로 해석 합니다.wcslen와이드 문자 버전인 strlen. 인수를 wcslen 와이드 문자 문자열 이며 전체 (2 바이트) 문자를 문자 개수입니다.wcslen및 strlen 그렇지를 동일 하 게 동작 합니다.

보안 참고 이러한 함수는 버퍼 오버런 문제를 가져온에 대 한 잠재적인 위협 초래 합니다.버퍼 오버런 문제는 자주 방법 시스템 공격에 불필요 한 권한 상승의 결과입니다.자세한 내용은 버퍼 오버런 방지.

일반 텍스트 루틴 매핑

TCHAR입니다.H 루틴

_UNICODE 및 _Mbcs가 정의 되어 있지 않습니다

_Mbcs가 정의

_Unicode가 정의

_tcslen

strlen

strlen

wcslen

_tcsclen

strlen

_mbslen

wcslen

_tcsclen_l

strlen_l

_mbslen_l

wcslen_l

_mbslen_mbslen_l, _mbstrlen 및 _mbstrlen_l 멀티 바이트 문자열에서 멀티 바이트 문자를 반환 하지만 멀티 바이트 문자 유효성을 테스트 하지 않습니다._mbstrlen및 _mbstrlen_l 멀티 바이트 문자 유효성을 테스트 하 고 인식 하는 멀티 바이트 문자 시퀀스setlocale을 _wsetlocale.문자열을 전달 하는 경우 _mbstrlen 또는 _mbstrlen_l 반환 코드 페이지에 대 한 잘못 된 멀티 바이트 문자가 포함 된-1과 세트 errno 에 EILSEQ.

출력 값의 설정에 의해 영향을 받지는 LC_CTYPE 범주 설정 로케일입니다. 볼 setlocale 에 대 한 자세한 내용은.없이 이러한 함수 버전을 _l 접미사는 현재 로케일에 대 한이 로케일 종속 동작; 사용 버전으로는 _l 접미사는 대신 전달 로캘 매개 변수를 사용 하는 경우를 제외 하 고 동일 합니다.자세한 내용은 로캘을 참조하십시오.

요구 사항

루틴

필수 헤더

strlen

<string.h>

strlen_l

<string.h>

wcslen, wcslen_l

<string.h> 또는 <wchar.h>

_mbslen, _mbslen_l

<mbstring.h>

_mbstrlen, _mbstrlen_l

<stdlib.h>

추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.

예제

// 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 항목

System::String::Length

참고 항목

참조

문자열 조작 (CRT)

멀티 바이트 문자 시퀀스로 해석

로캘

setlocale을 _wsetlocale

strcat, wcscat, _mbscat

strcmp, wcscmp, _mbscmp

strcoll 함수

strcpy, wcscpy, _mbscpy

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l