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 항목
참고 항목
참조
strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l
strncmp, wcsncmp, _mbsncmp, _mbsncmp_l
strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
strrchr, wcsrchr, _mbsrchr, _mbsrchr_l