Namespaces
Variants

strlen, strnlen_s

From cppreference.net
< c ‎ | string ‎ | byte
헤더 파일에 정의됨 <string.h>
size_t strlen ( const char * str ) ;
(1)
size_t strnlen_s ( const char * str, size_t strsz ) ;
(2) (C11 이후)
1) 주어진 널 종료 바이트 문자열의 길이를 반환합니다. 즉, str 이 가리키는 첫 번째 요소부터 첫 번째 널 문자 직전까지의 문자 배열에 있는 문자 수를 의미합니다.
동작은 str 이 null로 종료되는 바이트 문자열을 가리키는 포인터가 아닌 경우 정의되지 않습니다.
2) (1) 과 동일하지만, str 이 null 포인터인 경우 함수가 0을 반환하고, str 의 첫 strsz 바이트 내에서 null 문자를 찾지 못한 경우 strsz 를 반환한다는 점이 다릅니다.
다음의 경우 동작은 정의되지 않습니다: str 가 null-terminated byte string을 가리키는 포인터가 아니고 strsz 가 해당 문자 배열의 크기보다 큰 경우.
모든 bounds-checked 함수들과 마찬가지로, strnlen_s 는 구현체가 __STDC_LIB_EXT1__ 를 정의하고, 사용자가 __STDC_WANT_LIB_EXT1__ 를 정수 상수 1 으로 정의한 경우에만 사용 가능함이 보장됩니다 <string.h> 를 포함하기 전에.

목차

매개변수

str - 검사할 null로 종료되는 바이트 문자열을 가리키는 포인터
strsz - 검사할 최대 문자 수

반환값

1) 널 종료 바이트 문자열 str 의 길이
2) 성공 시 널 종료 바이트 문자열 str 의 길이, str 이 널 포인터인 경우 0, strsz 은 널 문자를 찾지 못한 경우입니다.

참고 사항

strnlen_s wcsnlen_s 는 런타임 제약 조건 핸들러를 호출하지 않는 유일한 경계 검사 함수 입니다. 이들은 널 종료되지 않은 문자열에 대한 제한된 지원을 제공하기 위해 사용되는 순수 유틸리티 함수입니다.

예제

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <string.h>
int main(void)
{
    const char str[] = "How many characters does this string contain?";
    printf("without null character: %zu\n", strlen(str));
    printf("with null character:    %zu\n", sizeof str);
#ifdef __STDC_LIB_EXT1__
    printf("without null character: %zu\n", strnlen_s(str, sizeof str));
#endif
}

가능한 출력:

without null character: 45
with null character:    46
without null character: 45

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.24.6.3 strlen 함수 (p: TBD)
  • K.3.7.4.4 strnlen_s 함수 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.24.6.3 strlen 함수 (p: TBD)
  • K.3.7.4.4 strnlen_s 함수 (p: TBD)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.24.6.3 The strlen function (p: 372)
  • K.3.7.4.4 The strnlen_s function (p: 623)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.21.6.3 strlen 함수 (p: 334)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.11.6.3 strlen 함수

참고 항목

(C95) (C11)
와이드 문자열의 길이를 반환합니다
(함수)
다음 멀티바이트 문자에 포함된 바이트 수를 반환합니다
(함수)