포인터 활용하여 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이 아니어야 하고, 두개의 첫 자리 문자가 같지 않아야 합니다. 이것을 의미합니다. 이 조건이 충족하면 증가 연산으로 다음 문자를 비교하기 위해 이동합니다. 길지 않은 함수이기 때문에 이해하기는 어렵지 않았을 거라고 생각합니다.
'C_C++' 카테고리의 다른 글
c언어 하면서 자주 하는 실수. (0) | 2020.10.29 |
---|---|
clang 으로 strncpy 구현해보기 (0) | 2020.10.29 |
포인터 활용하여 strlen() 함수를 직접 만들어보자 (0) | 2020.07.06 |
putstr()함수를 만들어보자. (0) | 2020.07.06 |
sqrt() 함수 직접 만들어보자. (0) | 2020.07.06 |