포인터 활용하여 strcmp 만들어보자

#include<stdio.h>

int		myStrcmp(char *str1, char*str2)
{
	while (*str1 && *str2 && *str1 == *str2){
  		*str1++;
  		*str2++;
  }
	return (*str1 - *str2);
}

int main(void){
  char str1[50] = "aaa";
  char str2[50] = "ccc";
  int result; 
  result = myStrcmp(str1, str2); 
  printf("\nresult : %d   ",result);
  return 0;
}

기본적인 방식은 어느 것이 더 큰 값을 갖고 있는지 계산을 하는 것입니다. 계산을 하기 위해서 서로의 값을 뺄셈 연산을 합니다.  앞의 값이 크면 양수가 나오고, 반대로 음수가 나오면 뒷 문자가 더 큽니다. 여기서 크다 작다는 ASCII 문자표에서 정한 크기를 말합니다. 둘이 같으면 0을 반환합니다.

함수에서 while 조건문 조건식이 말하는 것은 무엇일까요?? 일단 전달받은 값이 NULL이 아니어야 하고, 두개의 첫 자리 문자가 같지 않아야 합니다. 이것을 의미합니다. 이 조건이 충족하면 증가 연산으로 다음 문자를 비교하기 위해 이동합니다. 길지 않은 함수이기 때문에 이해하기는 어렵지 않았을 거라고 생각합니다.

뒤 문자가 더 크면 음수가 나온다.

 

Posted by 뭔가느낌이
,