다음을 통해 공유


strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

두 문자열의 문자를 지정한 수까지 비교합니다.

중요

Windows 런타임에서 실행되는 응용 프로그램에서는 _mbsncmp_mbsncmp_l을 사용할 수는 없습니다.자세한 내용은 CRT 함수는 /ZW 옵션을 지원하지 않음을 참조하세요.

int strncmp(
   const char *string1,
   const char *string2,
   size_t count 
);
int wcsncmp(
   const wchar_t *string1,
   const wchar_t *string2,
   size_t count 
);
int _mbsncmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count 
);
int _mbsncmp_l(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count, 
   _locale_t locale
);int _mbsnbcmp(
   const unsigned char *string1,
   const unsigned char *string2,
   size_t count 
);

매개 변수

  • string1, string2
    비교할 문자열입니다.

  • count
    비교할 문자 수입니다.

  • locale
    사용할 로캘입니다.

반환 값

반환 값은 다음과 같이 string1 및 string2 부분 문자열의 관계를 나타냅니다.

반환 값

설명

< 0

string1 부분 문자열이 string2 부분 문자열보다 작습니다.

0

string1 부분 문자열이 string2 부분 문자열과 같습니다.

> 0

string1 부분 문자열이 string2 부분 문자열보다 큽니다.

매개 변수 유효성 검사 오류 시 _mbsncmp 및 _mbsncmp_l은 <string.h> 및 <mbstring.h>에 정의된 _NLSCMPERROR를 반환합니다.

설명

strncmp 함수는 string1 및 string2에서 최대 처음 count개 문자까지 서수 비교를 수행한 다음 부분 문자열 간의 관계를 나타내는 값을 반환합니다. strncmp는 대소문자를 구분하는 _strnicmp 버전입니다. wcsncmp 및 _mbsncmp는 각각 대소문자를 구분하는 _wcsnicmp 및 _mbsnicmp 버전입니다.

wcsncmp 및 _mbsncmp는 strncmp의 와이드 문자 및 멀티바이트 문자 버전입니다. wcsncmp의 인수는 와이드 문자열이고 _mbsncmp의 인수는 멀티바이트 문자열입니다. _mbsncmp는 멀티바이트 코드 페이지에 따라 멀티바이트 문자 시퀀스를 인식하며 오류 발생 시 _NLSCMPERROR를 반환합니다.

또한 _mbsncmp 및 _mbsncmp_l은 매개 변수의 유효성을 검사합니다. string1 또는 string2가 null 포인터인 경우 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용한 경우 _mbsncmp 및 _mbsncmp_l은 _NLSCMPERROR를 반환하며 errno는 EINVAL로 설정됩니다. strncmp 및 wcsncmp는 매개 변수의 유효성을 검사하지 않습니다. 그 외의 경우에는 이들 함수가 동일하게 작동합니다.

로캘의 LC_CTYPE 범주 설정이 _mbsncmp 및 _mbsncmp_l의 비교 동작에 영향을 줍니다. 이 설정은 멀티바이트 문자의 선행 및 후행 바이트 검색을 제어합니다. 자세한 내용은 setlocale을 참조하세요. _mbsncmp 함수는 이 로캘 종속 동작에 대해 현재 로캘을 사용합니다. _mbsncmp_l 함수는 locale 매개 변수를 대신 사용한다는 점을 제외하면 이 함수와 동일합니다. 자세한 내용은 로캘을 참조하십시오. 싱글바이트 로캘의 경우 이러한 함수의 동작은 strncmp와 같습니다.

제네릭 텍스트 라우팅 매핑

TCHAR.H 루틴

_UNICODE 및 _MBCS 정의되지 않음

_MBCS 정의됨

_UNICODE 정의됨

_tcsnccmp

strncmp

_mbsncmp

wcsncmp

_tcsncmp

strncmp

_mbsnbcmp

wcsncmp

_tccmp

매크로 또는 인라인 함수에 매핑

_mbsncmp

매크로 또는 인라인 함수에 매핑

적용할 수 없음

적용할 수 없음

_mbsncmp_l

적용할 수 없음

요구 사항

루틴

필수 헤더

strncmp

<string.h>

wcsncmp

<string.h> 또는 <wchar.h>

_mbsncmp, _mbsncmp_l

<mbstring.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예제

// crt_strncmp.c
#include <string.h>
#include <stdio.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown fox jumps over the lazy dog";

int main( void )
{
   char tmp[20];
   int result;
   printf( "Compare strings:\n      %s\n      %s\n\n",
           string1, string2 );
   printf( "Function:   strncmp (first 10 characters only)\n" );
   result = strncmp( string1, string2 , 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n\n", tmp );
   printf( "Function:   strnicmp _strnicmp (first 10 characters only)\n" );
   result = _strnicmp( string1, string2, 10 );
   if( result > 0 )
      strcpy_s( tmp, sizeof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, sizeof(tmp), "less than" );
   else
      strcpy_s( tmp, sizeof(tmp), "equal to" );
   printf( "Result:      String 1 is %s string 2\n", tmp );
}
  

해당 .NET Framework 항목

System::String::Compare

참고 항목

참조

문자열 조작(CRT)

로캘

멀티바이트 문자 시퀀스 해석

_mbsnbcmp, _mbsnbcmp_l

_mbsnbicmp, _mbsnbicmp_l

strcmp, wcscmp, _mbscmp

strcoll 함수

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l