다음을 통해 공유


strcmp, wcscmp, _mbscmp

비교 문자열입니다.

중요

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

int strcmp(
   const char *string1,
   const char *string2 
);
int wcscmp(
   const wchar_t *string1,
   const wchar_t *string2 
);
int _mbscmp(
   const unsigned char *string1,
   const unsigned char *string2 
);

매개 변수

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

반환 값

이러한 각 함수의 반환 값은 string2에 대한 string1의 서수 관계를 나타냅니다.

문자열 1과 문자열 2의 관계

< 0

string1 < string2

0

string1 = string2

> 0

string1 > string2

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

설명

strcmp 함수는 string1 및 string2의 서수 비교를 수행하고 해당 관계를 나타내는 값을 반환합니다. wcscmp 및 _mbscmp는 각각 strcmp의 와이드 문자 및 멀티바이트 문자 버전입니다. _mbscmp는 현재 멀티바이트 코드 페이지에 따라 멀티바이트 문자 시퀀스를 인식하며 오류 발생 시 _NLSCMPERROR를 반환합니다. 자세한 내용은 코드 페이지을 참조하십시오. 또한 string1 또는 string2가 null 포인터인 경우 매개 변수 유효성 검사에 설명된 대로 _mbscmp는 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용한 경우 _mbscmp는 _NLSCMPERROR를 반환하고 errno를 EINVAL로 설정합니다. strcmp 및 wcscmp는 매개 변수의 유효성을 검사하지 않습니다. 그렇지 않으면 이들 세 함수는 동일하게 작동합니다.

제네릭 텍스트 라우팅 매핑

TCHAR.H 루틴

_UNICODE 및 _MBCS 정의되지 않음

_MBCS 정의됨

_UNICODE 정의됨

_tcscmp

strcmp

_mbscmp

wcscmp

strcmp 함수가 strcoll 함수와 다른 점은 strcmp 비교는 서수이며 로캘의 영향을 받지 않는다는 것입니다. strcoll은 현재 로캘의 LC_COLLATE 범주를 사용하여 문자열을 사전 순으로 비교합니다. LC_COLLATE 범주에 대한 자세한 내용은 setlocale, _wsetlocale을 참조하십시오.

"C" 로캘에서 문자 집합(ASCII 문자 집합)의 순서는 사전적 문자 순서와 같습니다. 그러나 다른 로캘에서 문자 집합의 순서는 사전적 순서와 다를 수 있습니다. 예를 들어 특정 유럽 로캘의 문자 집합에서 문자 'a'(값 0x61)는 문자 'ä'(값 0xE4) 앞에 오지만 사전적으로는 문자 'ä'가 'a' 앞에 옵니다.

문자 집합과 사전의 문자 순서가 서로 다른 로캘에서는 문자열의 사전 순 비교에 strcmp 대신 strcoll을 사용할 수 있습니다. 원본 문자열에서는 strxfrm을 사용하고 결과 문자열에서는 strcmp를 사용할 수도 있습니다.

strcmp 함수는 대소문자를 구분합니다. _stricmp, _wcsicmp 및 _mbsicmp는 먼저 문자열을 소문자 형식으로 변환한 후에 문자열을 비교합니다. ASCII 테이블의 'Z'와 'a' 사이에 있는 문자('[', '\', ']', '^', '_', '`')를 포함하는 두 문자열은 대소문자에 따라 서로 다른 방식으로 비교됩니다. 예를 들어 두 문자열 "ABCDE" 및 "ABCD^"은 소문자("abcde" > "abcd^")인 경우와 대문자("ABCDE" < "ABCD^")인 경우에 다른 방법으로 비교됩니다.

요구 사항

루틴

필수 헤더

strcmp

<string.h>

wcscmp

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

_mbscmp

<mbstring.h>

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

라이브러리

모든 버전의 C 런타임 라이브러리입니다.

예제

// crt_strcmp.c

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

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

int main( void )
{
   char tmp[20];
   int result;

   // Case sensitive
   printf( "Compare strings:\n   %s\n   %s\n\n", string1, string2 );
   result = strcmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof (tmp), "less than" );
   else
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   strcmp:   String 1 is %s string 2\n", tmp );

   // Case insensitive (could use equivalent _stricmp)
   result = _stricmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof (tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof (tmp), "less than" );
   else
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   _stricmp:  String 1 is %s string 2\n", tmp );
}
  

해당 .NET Framework 항목

System::String::CompareOrdinal

참고 항목

참조

문자열 조작(CRT)

memcmp, wmemcmp

_memicmp, _memicmp_l

strcoll 함수

_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

strspn, wcsspn, _mbsspn, _mbsspn_l

strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l