IT_Programming/C · C++

strcpy(), strcat(), strlen(), strcmp() 함수를 직접 만드시오 (포인터연습)

JJun ™ 2007. 1. 29. 15:07
 

strcpy(des, src) => src가 가리키는 문자열을 des가 가리키는 문자열에 복사하는 함수

 

strcat(str1, str2) => str1이 가리키는 문자배열의 끝에 str2가 가리키는 문자열을 덧붙여주는 함수

 

strlen(str) => str문자열의 길이를 구하는 함수

 

strcmp(str1, str2) => 두 문자열이 동일한지를 판단하는 함수

                                       str1,str2가 동일한 내용의 문자열을 가리킨다면 0을 리턴

                                       str1이 가리키는 문자열이 str2가 가리키는 문자열보다 작으면 -1,

                                       크면 1을 리턴. 만일 길이가 같다면 첫번째 문자부터 서로 비교하여

                                       처음으로 다른문자를 만났을때 아스키 코드값이 큰 경우

 

===========================================================

// 원래함수와 혼동을 피하기 위해 함수 이름 앞에 p를 붙였습니다.

 

※strcpy()

 

void pstrcpy(char *s1, const char *s2)
{
   while(*s2 != '\0')
   {
      *s1=*s2;
      s1++;
      s2++;
   }
   *s1='\0';
}

 

=============================================================

 

※strcat()

 

void pstrcat(char *s1, const char *s2)
{
   while(*s1 != '\0')
      s1++;
   while(*s2 != '\0')
   {
      *s1=*s2;
      s1++;
      s2++;
   }
   *s1='\0';
}


==============================================================

 

※strlen()


int pstrlen(char *s1)
{
   int cnt=0;

   while(*s1 !='\0')
   {
      cnt++;
      s1++;
   }
   return cnt;
}

 

==============================================================

 

※strcmp()

 

int pstrcmp(char *s1, char*s2)
{
   while(*s1==*s2 && *s1!='\0' && *s2!='\0')
   {
      s1++;
      s2++;
   }
   if(*s1<*s2) return -1;
   else if(*s1>*s2) return 1;
   else return 0;
}

 

==============================================================