[[프로그래밍_NOTE]]/C , C++

strcmp 기능 구현

갑빠돌격기 2008. 8. 13. 14:45

/** strcmp ******************************************************************
#include<stdio.h>
#include<string.h>

void main()
{
 const char temp1[16] = {"abc"};
 const char temp2[16] = {"abb"};

 int re = strcmp(temp1,temp2);

 if(re==0)
 {
  printf("temp1 = temp2\n");
 }
 else if(re < 0)
 {
  printf("temp1 < temp2\n");
 }
 else //re >0
 {
  printf("temp1 > temp2\n");
 }
}
********************************************************************************/

/** MyStrCmp *******************************************************************
#include<stdio.h>

int MyStrCmp(const char* pCompStr1 , const char* pCompStr2)
{
 while( (*pCompStr1) || (*pCompStr2))
 {
  if(*pCompStr1 == *pCompStr2)
  {
   *pCompStr1++;
   *pCompStr2++;
  }
  else if(*pCompStr1 < *pCompStr2)
  {
   return -1;
  }
  else if(*pCompStr1 > *pCompStr2)
  {
   return 1;
  }
 }
 return 0;
}

void main()
{
 const char temp1[16] = {""};
 const char temp2[16] = {"abcd"};

 int re = MyStrCmp(temp1 , temp2);

 if(re==0)
 {
  printf("temp1 = temp2\n");
 }
 else if(re < 0)
 {
  printf("temp1 < temp2\n");
 }
 else //re >0
 {
  printf("temp1 > temp2\n");
 }
}
********************************************************************************/



 /** tip : 가독성은 떨어지나 더 간략한 소스 *******************************************
int MyStrCmp(const char* pCompStr1 , const char* pCompStr2)
{
for(;*pCompStr1==*pCompStr2 && *pCompStr1 & *pCompStr2;++pCompStr1,++pCompStr2);   return *pCompStr1 == *pCompStr2 ? 0 : (*pCompStr1>*pCompStr2 ? 1:-1);
}
 **********************************************************************************/

result)

사용자 삽입 이미지