strncmp
|
헤더 파일에 정의됨
<string.h>
|
||
|
int
strncmp
(
const
char
*
lhs,
const
char
*
rhs,
size_t
count
)
;
|
||
최대 count 개의 문자를 두 개의 널 종료 가능 배열에서 비교합니다. 비교는 사전식 순서로 수행됩니다. 널 문자 이후의 문자는 비교되지 않습니다.
결과의 부호는 비교 중인 배열에서 서로 다른 첫 번째 문자 쌍의 값(둘 다 unsigned char 로 해석됨) 간의 차이 부호에 따라 결정됩니다.
배열 lhs 또는 rhs 의 끝을 넘어서 접근이 발생할 때의 동작은 정의되지 않습니다. lhs 또는 rhs 가 null 포인터일 때의 동작 또한 정의되지 않습니다.
목차 |
매개변수
| lhs, rhs | - | 비교할 null 종료 가능성이 있는 배열에 대한 포인터 |
| count | - | 비교할 최대 문자 수 |
반환값
음수 값은 lhs 가 사전식 순서에서 rhs 보다 먼저 나타날 경우를 의미합니다.
lhs 와 rhs 가 동일하게 비교되거나, count가 0인 경우 0입니다.
lhs 가 rhs 보다 사전식 순서에서 뒤에 나타나면 양의 값.
참고 사항
이 함수는 strcoll 및 strxfrm 과 달리 로캘에 민감하지 않습니다.
예제
#include <stdio.h> #include <string.h> void demo(const char* lhs, const char* rhs, int sz) { const int rc = strncmp(lhs, rhs, sz); if (rc < 0) printf("First %d chars of [%s] precede [%s]\n", sz, lhs, rhs); else if (rc > 0) printf("First %d chars of [%s] follow [%s]\n", sz, lhs, rhs); else printf("First %d chars of [%s] equal [%s]\n", sz, lhs, rhs); } int main(void) { const char* string = "Hello World!"; demo(string, "Hello!", 5); demo(string, "Hello", 10); demo(string, "Hello there", 10); demo("Hello, everybody!" + 12, "Hello, somebody!" + 11, 5); }
출력:
First 5 chars of [Hello World!] equal [Hello!] First 10 chars of [Hello World!] follow [Hello] First 10 chars of [Hello World!] precede [Hello there] First 5 chars of [body!] equal [body!]
참고문헌
- C23 표준 (ISO/IEC 9899:2024):
-
- 7.24.4.4 strncmp 함수 (p: TBD)
- C17 표준 (ISO/IEC 9899:2018):
-
- 7.24.4.4 strncmp 함수 (p: TBD)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.24.4.4 strncmp 함수 (p: 366)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.21.4.4 strncmp 함수 (p: 329)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 4.11.4.4 strncmp 함수
참고 항목
|
두 문자열을 비교합니다
(함수) |
|
|
(C95)
|
두 와이드 문자열에서 지정된 수의 문자를 비교합니다
(함수) |
|
두 버퍼를 비교합니다
(함수) |
|
|
현재 로캘에 따라 두 문자열을 비교합니다
(함수) |
|
|
C++ documentation
for
strncmp
|
|