본문 바로가기
  • AI (Artificial Intelligence)
Programming/C, C++

[C언어]strcmp함수

by 로샤스 2014. 7. 18.


위 표를 보다시피 strcmp() 의 원형은

int strcmp(const char * str1, const char * str2) 가 되겠다


strcmp() 는 1번인자와 2번인자의 문자열 크기를

대소비교 하여 int형으로 값을 반환해 주는 함수다


두 인자의 문자열이 같으면 '0'을 반환해주며

같지 않을때에는 '0'이 아닌 수를 반환한다.

그러면, '0'이 아닌수가 의미하는 바는 무엇일까??


문자열이 같을 때

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

int main()
{
  char str1[100= "banana";
  char str2[100= "banana";

  printf("%d\n",strcmp(str1,str2));
  
  return 0;
}


접기

0

접기




문자열이 다를 때

#include <stdio.h>

int main()
{
  char str1[100= "apple";
  char str2[100= "banana";

  
  printf("%d\n",strcmp(str1,str2));
  return 0;
}



접기

-1

접기


일반적으로 알고있는 이론은


왼쪽인자의 문자열 길이가 작으면 -1 반환되고

오른쪽의 문자열 길이가 작으면 1 가 반환된다

둘다 같다면 0 이 반환된다.


일 것이다.


하지만 알아두어야 할 점은

strcmp()는 ASCII code를 비교하는 함수다.



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

int main()
{
  char str1[100= "AAA";
  char str2[100= "AAA";

  char str3[100= "AAB";
  char str4[100= "AAA";

  printf("str1= AAA, str2 = AAA : %d\n",strcmp(str1,str2));
  printf("str3= AAA, str4 = AAA : %d\n",strcmp(str3,str4));
  printf("str4= AAA, str3 = AAA : %d\n",strcmp(str4,str3));
  
  return 0;
}


접기

str1= AAA, str2 = AAA : 0

str3= AAA, str4 = AAA : 1

str4= AAA, str3 = AAA : -1

접기



str1과 str2를 비교했을때는 같으니까 '0'이 나왔다.

그다음

str3과 str4를 비교했을때

str3은 'AAB' 이므로 아스키코드로 '65 65 66'이다.

str4는 'AAA' 이므로 아스키코드로 '65 65 65'이다.


str3이 1번인자에 있으므로 '1'이 출력됬다.


그다음 str4와 str3을 비교했을때에는

'-1'이 출력되었다.


이로써 알 수 있는점은

1번인자의 아스키코드의 합이 2번인자보다 크면 양수(1)가 반환되고

2번인자의 아스키코드의 합이 1번인자보다 크면 음수(-1)가 반환되는 것을 알 수 있다.

 

 

 

 

 

 

 

 

 

 

 

출처 : http://euro87.tistory.com/117

 

 

 

 

 

 

댓글