strcmp, wcscmp, _tcscmp
스트링을 비교하는 함수들이다.
다 같은 함수인데 스트링설정에 따라 골라쓰면 된다.
즉 MBCS일때는 strcmp를 쓰면되고, UNICODE 일때는 wcscmp를 쓴다.
이것저거 신경쓰기 귀찮으면 그냥 _tcscmp를 쓰면 되는데, 이건 아마 MFC를 쓸때 TCHAR.h가 선언되어 있다는 가정하에 사용해야 될거다.
보통 VC++을 사용해서 개발한다면 그냥 _tcscmp를 쓰면된다. ( char 대신 TCHAR쓰면되고... )
반환 값
--------------------------------------------------------------------------------
이러한 함수의 반환 값은 string1에서 string2의 사전 관계를 나타냅니다.
값 문자열 1과 문자열 2의 관계
< 0 string1이 string2보다 작습니다.
0 string1은 string2와 동일합니다.
> 0 string1이 string2보다 큽니다.
오류에서, _mbscmp 는 _NLSCMPERROR 를 반환합니다, 문자열에 정의 된.H와 MBSTRING입니다.H.
사용법은 이렇다.
char string1[] = "string1";
char string2[] = "string2";
int result = strcmp( string1, string2 );
result > 0 이면 string1 > string2 이다.
result < 0 이면 string1 < string2 이다.
result = 0 이면 string1 = string2 이다.
<흔히하는 실수>
if( strcmp( string1, string2 ) )
{
// 스트링이 같을때의 액션..
}
이렇게 하면 클난다.
위에서 보면 같을때는 리턴값이 0이다.
이런 버그는 찾기도 힘들다.
미치는거다..
if( 0 == strcmp( string1, string2 ) )
{
// 스트링이 같을때의 액션..
}
이렇게 써야된다.