다음을 통해 공유


strnlen, strnlen_s, strnlen_l, wcsnlen, wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l

현재 로캘 또는 전달 되었습니다 하나를 사용 하 여 문자열의 길이 가져옵니다.각각의 보다 안전한 버전 strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l.

중요중요

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

size_t strnlen(
   const char *str,
   size_t numberOfElements 
);
size_t strnlen_s(
   const char *str,
   size_t numberOfElements 
);
size_t strnlen_l(
   const char *str,
   size_t numberOfElements,
   _locale_t locale
);
size_t wcsnlen(
   const wchar_t *str,
   size_t numberOfElements
);
size_t wcsnlen_s(
   const wchar_t *str,
   size_t numberOfElements
);
size_t wcsnlen_l(
   const wchar_t *str,
   size_t numberOfElements,
   _locale_t locale
);
size_t _mbsnlen(
   const unsigned char *str,
   size_t numberOfElements
);
size_t _mbsnlen_l(
   const unsigned char *str,
   size_t numberOfElements,
   _locale_t locale
);
size_t _mbstrnlen(
   const char *str,
   size_t numberOfElements
);
size_t _mbstrnlen_l(
   const char *str,
   size_t numberOfElements,
   _locale_t locale
);

매개 변수

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

  • numberOfElements
    문자열 버퍼의 크기입니다.

  • locale
    사용 하는 로캘.

반환 값

이러한 함수 null 종결 문자를 포함 하지 않는 문자열에 문자 수를 반환 합니다.내 첫 번째 null 종료 문자 없음 경우 numberOfElements 문자열의 바이트 (또는 와이드 문자에 대 한 wcsnlen), 다음 numberOfElements 는 오류 조건을 나타내기 위해 반환 됩니다 null로 끝나는 문자열이 있는 엄격 하 게 되는 길이 보다 작거나 numberOfElements.

_mbstrnlen및 _mbstrnlen_l 문자열에 잘못 된 멀티 바이트 문자가 포함 된 경우-1을 반환 합니다.

설명

[!참고]

strnlen대체 하지 않습니다 strlen. strnlen만 알려진된 크기의 버퍼에 들어온 신뢰할 수 없는 데이터의 크기를 계산 하는 데 사용할 수 있습니다-예를 들어, 네트워크 패킷을.strnlen길이 계산 되지만 문자열 종료 경우 버퍼 끝을 지나서 안내 하지 않습니다.다른 상황에 대 한 사용 strlen.(The same applies to wcsnlen, _mbsnlen, and _mbstrnlen.)

이러한 각 함수에서 문자 개수를 반환 합니다. strnull 종결 문자를 포함 하 여.그러나 strnlen 및 strnlen_l 싱글 바이트 문자 문자열로 문자열을 해석 하 고 멀티 바이트 문자 문자열을 포함 하는 경우에 따라서 반환 값의 바이트 수와 같은 것입니다.wcsnlen및 wcsnlen_l 의 와이드 문자 버전은 strnlen 및 strnlen_l 각각. 인수에 대 한 wcsnlen 및 wcsnlen_l 와이드 문자 문자열 이며 수 문자를 와이드 문자 단위로 합니다.Otherwise, wcsnlen, wcsnlen_l, strnlen and strnlen_l behave identically.

strnlenwcsnlen, 및 _mbsnlen 매개 변수의 유효성을 검사 하지 않습니다.경우 str 는 NULL에서 액세스 위반이 발생 합니다.

strnlen_s및 wcsnlen_s 매개 변수의 유효성을 검사 합니다.경우 str 는 NULL, 함수에서 0을 반환 합니다.

_mbstrnlen또한 매개 변수를 확인합니다.경우 str 는 NULL, 또는 numberOfElements 보다 큰 INT_MAX, _mbstrnlen 에 설명 된 대로 잘못 된 매개 변수가 예외가 생성 매개 변수 유효성 검사.실행을 계속 하려면 허용 되는 경우 _mbstrnlen 설정 errno 에 EINVAL 및-1을 반환 합니다.

일반 텍스트 루틴 매핑

TCHAR입니다.H 루틴

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

_Mbcs가 정의

_Unicode가 정의

_tcsnlen

strnlen

strnlen

wcsnlen

_tcscnlen

strnlen

_mbsnlen

wcsnlen

_tcscnlen_l

strnlen_l

_mbsnlen_l

wcsnlen_l

_mbsnlen및 _mbstrnlen 멀티 바이트 문자 문자열을 멀티 바이트 문자 수를 반환 합니다._mbsnlen현재 사용에서 되는 멀티 바이트 코드 페이지에 따라 또는 전달 된 로케일에 따라 멀티 바이트 문자 시퀀스 인식 합니다. 멀티 바이트 문자 유효성을 테스트 하지는 않습니다._mbstrnlen멀티 바이트 문자 유효성을 테스트 하 고 멀티 바이트 문자 시퀀스를 인식 합니다.경우 전달 되는 문자열 _mbstrnlen 에 잘못 된 멀티 바이트 문자가 포함 된 errno 로 설정 된 EILSEQ.

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

요구 사항

루틴

필수 헤더

strnlen, strnlen_s, strnlen_l

<string.h>

wcsnlen, wcsnlen_s, wcsnlen_l

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

_mbsnlen, _mbsnlen_l

<mbstring.h>

_mbstrnlen, _mbstrnlen_l

<stdlib.h>

추가 호환성 정보를 참조 하십시오. 호환성.

예제

// crt_strnlen.c

#include <string.h>

int main()
{
   // str1 is 82 characters long. str2 is 159 characters long 

   char* str1 = "The length of a string is the number of characters\n"
               "excluding the terminating null.";
   char* str2 = "strnlen takes a maximum size. If the string is longer\n"
                "than the maximum size specified, the maximum size is\n"
                "returned rather than the actual size of the string.";
   size_t len;
   size_t maxsize = 100;

   len = strnlen(str1, maxsize);
   printf("%s\n Length: %d \n\n", str1, len);
   
   len = strnlen(str2, maxsize);
   printf("%s\n Length: %d \n", str2, len);
}
  
  
  
  

해당 .NET Framework 항목

System::String::Length

참고 항목

참조

문자열 조작 (CRT)

로캘

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

setlocale을 _wsetlocale

strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

strcoll 함수

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l