int *strcmp(char *s1, char * s2)
s1문자열과 s2문자열을 비교한다.
주의 사항
확장된 ascii 값이 들어올 경우를 고려하여 unsinged char 변수를 선언하여 처리해 준다.
반환 값
두 문자열을 비교하다가 다른 지점을 만났을 때의 s1의 ascii 값에서 s2의 ascii 값을 뺀 정수 값을 반환한다.int reproduce_strcmp(char *s1, char *s2) { int i; unsigned char temp_s1; unsigned char temp_s2; i = 0; while (*(s1 + i) || *(s2 + i)) { if (*(s1 + i) != *(s2 + i)) { temp_s1 = *(s1 + i); temp_s2 = *(s2 + i); return (temp_s1 - temp_s2); } ++i; } return (0); }
int *strncmp(char *s1, char * s2, unsigned int n)
s1문자열과 s2문자열을 n개 만큼 비교한다.
주의 사항
확장된 ascii 값이 들어올 경우를 고려하여 unsinged char 변수를 선언하여 처리해 준다.
반환 값
두 문자열을 n개만큼 비교하다가 다른 지점을 만났을 때의 s1의 ascii 값에서 s2의 ascii 값을 뺀 정수 값을 반환한다.int reproduce_strncmp(char *s1, char *s2, unsigned int n) { unsigned int i; unsigned char temp_s1; unsigned char temp_s2; i = 0; while ((*(s1 + i) || *(s2 + i)) && i < n) { if (*(s1 + i) != *(s2 + i)) { temp_s1 = *(s1 + i); temp_s2 = *(s2 + i); return (temp_s1 - temp_s2); } ++i; } return (0); }
char *strstr(char *haystack, char * niddle)*
haystack에 niddle이 있는 지 찾는다.
주의 사항
haystack의 문자열로 niddle을 만들 수 있는 지 확인하려면 어떻게 만들면 될지 고민해보면 좋은 문제다.
반환 값
(1) niddle이 빈 문자열이라면 그냥 haystack을 반환한다.
(2) niddle을 haystack 어디서도 찾지 못한다면 NULL을 반환한다.
(3) niddle을 haystack에서 찾았다면 찾은 첫 문자의 주소를 반환한다.char *reproduce_strstr(char *str, char *to_find) { int index; index = 0; if (*to_find == '\0') return (str); while (*str) { index = 0; while (*(str + index) == *(to_find + index)) { ++index; if (*(to_find + index) == '\0') return (str); } ++str; } return (0); }