Namespaces
Variants

wcsncmp

From cppreference.net
< c ‎ | string ‎ | wide
헤더 파일에 정의됨 <wchar.h>
int wcsncmp ( const wchar_t * lhs, const wchar_t * rhs, size_t count ) ;
(C95부터)

최대 count 개의 와이드 문자를 두 개의 널 종료 와이드 문자열에서 비교합니다. 비교는 사전식 순서로 수행됩니다.

결과의 부호는 비교 중인 문자열에서 서로 다른 첫 번째 와이드 문자 쌍의 값 차이의 부호입니다.

lhs 또는 rhs 가 null-terminated 문자열을 가리키는 포인터가 아닌 경우, 동작은 정의되지 않습니다.

목차

매개변수

lhs, rhs - 비교할 널 종료 와이드 문자열에 대한 포인터
count - 비교할 최대 문자 수

반환값

음수 값은 lhs rhs 보다 사전식 순서에서 먼저 나타나는 경우입니다.

lhs rhs 가 동일하게 비교되면 0입니다.

lhs rhs 보다 사전식 순서에서 뒤에 나타나면 양의 값.

참고 사항

이 함수는 wcscoll wcsxfrm 과 달리 로캘에 민감하지 않습니다.

예제

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
void demo(const wchar_t *lhs, const wchar_t *rhs, int sz)
{
    int rc = wcsncmp(lhs, rhs, sz);
    if(rc == 0)
        printf("First %d characters of [%ls] equal [%ls]\n", sz, lhs, rhs);
    else if(rc < 0)
        printf("First %d characters of [%ls] precede [%ls]\n", sz, lhs, rhs);
    else if(rc > 0)
        printf("First %d characters of [%ls] follow [%ls]\n", sz, lhs, rhs);
}
int main(void)
{
    const wchar_t *str1 = L"안녕하세요";
    const wchar_t *str2 = L"안녕히 가십시오";
    setlocale(LC_ALL, "en_US.utf8");
    demo(str1, str2, 5);
    demo(str2, str1, 8);
    demo(str1, str2, 2);
}

출력:

First 5 characters of [안녕하세요] precede [안녕히 가십시오]
First 8 characters of [안녕히 가십시오] follow [안녕하세요]
First 2 characters of [안녕하세요] equal [안녕히 가십시오]

참고문헌

  • C11 표준 (ISO/IEC 9899:2011):
  • 7.29.4.4.3 wcsncmp 함수 (p: 434)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.24.4.4.3 wcsncmp 함수 (p: 380)

참고 항목

(C95)
두 개의 와이드 문자열을 비교함
(함수)
(C95)
두 배열에서 지정된 개수의 와이드 문자를 비교함
(함수)
(C95)
현재 로캘에 따라 두 개의 와이드 문자열을 비교함
(함수)
C++ 문서 for wcsncmp