App Programming/C/C++

[c/c++ source] strcpy, strcat, strlen, strrev, strupr, strlwr, strcmp 함수 구현

BAGE 2008. 11. 27. 18:24
출처: ??


아래함수는 c언어에서 기본으로 제공되는 표준 문자열 관련 함수를 새롭게 구현한 소스입니다.
//문자열을 복사하는 함수 (s1:사본, s2:원본)
void strcpy(char *s1, char *s2)
{
  while(*s2!='')
  {
    *s1=*s2;
    s1++; s2++;
  }
  *s1='';
}

//문자열의 끝에 문자열을 이어붙이는 함수 
void strcat(char *s1, char *s2)
{
  while(*s1!='')
    s1++;
  while(*s2!='')
  {
    *s1=*s2;
    s1++;
    s2++;
  }
  *s1='';
}

//문자열의 길이를 리턴
int strlen(char *s1)
{
  int cnt=0;

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

//문자열을 거꾸로 뒤집는 함수
void strrev(char *s)
{
  char tmp;
  int len=strlen(s);
  for(int i=0; i<len/2;++i)
  {
    tmp=*(s+i);
    *(s+i)=*(s+len-1-i);
    *(s+len-1-i)=tmp;
  }
}

//문자열을 대문자로 변환하는 함수
void strupr(char *s1)
{
  while(*s1!='')
  {
    if(*s1>=97 && *s1<=122)
      *s1-=32;
    s1++;
  }
  
}

//문자열을 소문자로 변환하는 함수
void strlwr(char *s1)
{
  while(*s1!='')
  {
    if(*s1>=65 && *s1<=90)
      *s1+=32;
    s1++;
  }
}

//문자열의 대소를 비교하는 함수
int strcmp(char *s1, char *s2)
{
  while(*s1==*s2 && *s1!='' && *s2!='')
  {
    s1++;
    s2++;
  }
  if(*s1<*s2) return(-1);
  else if(*s1>*s2) return(1);
  else return(0);  
}