한국어
C/C++
 

strcmp, wcscmp, _tcscmp

pjk 2014.07.18 18:21 조회 수 : 10558

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 ) )

{
// 스트링이 같을때의 액션..
}

이렇게 써야된다.

 

번호 제목 글쓴이 날짜 조회 수
공지 C Programming FAQs(한글번역 pdf문서) makersweb 2014.03.18 26985
22 비트 필드의 크기는 해당 유형의 크기를 초과할 수 없다. makersweb 2023.04.25 356
21 flexible array member 에 대해서 file makersweb 2020.02.20 1915
20 C++로 플러그인 개발 file makersweb 2019.12.08 1794
19 배열과 포인터, 등가포인터 예제 makersweb 2019.01.16 1109
18 싱글톤 객체생성 패턴에 대해서 file makersweb 2018.07.01 3631
17 함수포인터와 typedef로의 선언 makersweb 2018.02.03 1151
16 switch와 if 중 어느 것이 더 빠른가 file makersweb 2017.01.31 2826
15 구조체 배열을 반환하는 함수를 반환하는 함수를 호출하여 구조체 멤버 배열 요소 접근하기 makersweb 2016.05.22 9792
14 c/c++문자열, 유니코드 관련 함수 makersweb 2015.07.09 5223
13 volatile이 정확히 어떤 의미를 가지는 건가요? pjk 2014.09.30 4604
12 HEX(16진수) to ASCII(아스키) 변환 코드 pjk 2014.08.24 33120
» strcmp, wcscmp, _tcscmp pjk 2014.07.18 10558
10 클래스 멤버에 대한 액세스 제어 pjk 2014.06.27 4704
9 unsigned형의 모든 상수에는 접미사 ‘U’를 사용하여야 한다. file pjk 2014.05.24 37449
8 void형 포인터 pjk 2014.05.24 5124
7 함수 포인터의 배열 pjk 2014.05.24 7606
6 구조체 메모리 저장방식 #pragma pack file pjk 2014.05.24 5394
5 Bit fields(비트필드) pjk 2014.05.24 4471
4 예제소스를 통해 리틀엔디안(Little endian)과 빅엔디안(Big endian)의 차이점 알아보기 pjk 2014.05.24 8214
3 영어를 C언어로, 또는 C언어를 영어로 변환 해주는 cdecl makersweb 2014.03.19 7442