strlen, strnlen_s
From cppreference.net
|
헤더 파일에 정의됨
<string.h>
|
||
|
size_t
strlen
(
const
char
*
str
)
;
|
(1) | |
| (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)
|
와이드 문자열의 길이를 반환합니다
(함수) |
|
다음 멀티바이트 문자에 포함된 바이트 수를 반환합니다
(함수) |
|
|
C++ documentation
for
strlen
|
|