반응형
string.h에 내장되어있는 함수인 strcmp(str1, str2). 두 개의 문자열의 사전상 순서(크기)를 비교하기 위해 사용된다.
리턴 값이 0보다 작으면 str1이 더 먼저 나오는 것.
리턴 값이 0이면 두 문자열이 같은 것.
리턴 값이 0보다 크면 str2가 먼저 나오는 것이다.
함수 알고리즘
1. 두 문자열을 처음 문자부터 비교한다. 중간에 서로 다른 문자가 나오면 비교해 str1의 문자가 사전상 먼저 나오면 -1, str2가 사전상 먼저 나오면 1을 리턴한다.
2. for문을 빠져나오면 상황은 두 가지이다. 둘 중 하나가 먼저 NULL을 만났거나, 둘 다 같아서 둘 다 NULL을 만난 상태이거나. 여기서 str1이 먼저 끝났으면 -1, str2가 먼저 끝났으면 1을 리턴한다. 길이가 짧으면 무조건 먼저 나오니까.
3. 해당 if문도 들어가지 않고 탈출한다면, 두 문자열은 같은 문자열이다. 0을 리턴한다.
#include <stdio.h> // str1이 사전상 먼저 나오면 return -1, 같으면 return 0, str2가 먼저 나오면 return 1 int my_strcmp(char *str1, char *str2) { int i; for (i = 0; str1[i] && str2[i]; i++) { if (str1[i] < str2[i]) return -1; if (str1[i] > str2[i]) return 1; } if (!(!str1[i] && !str2[i])) { if (!str1[i]) return -1; if (!str2[i]) return 1; } return 0; } int main() { char str1[101]; char str2[101]; scanf("%s", str1); scanf("%s", str2); printf("%d", my_strcmp(str1, str2)); }
반응형
'C, C++ > 함수창고' 카테고리의 다른 글
[C] 함수: 숫자 뒤집기 (0) | 2018.07.25 |
---|