구현 단계
- 내 정신건강을 위해 const unsigned char*로 받아준다.
- 기본적으로 NULL을 반환
- 중간에 character와 일치하는 문자를 보면 그 포인터를 반환
- length가 0이하이거나, length만큼 시도한 경우 중지하기 위해 루프 시작에서 0과 크기를 비교하고 루프 끝에서 length--
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <stdio.h> #include <string.h> void* mymemchr(const void*, int, size_t); void* mymemchr(const void* string, int character, size_t length) { const unsigned char* pString = string; while ('\0' != *pString && length > 0) { if (*pString++ == character){ pString--; return (void *)pString; } length--; } return NULL; } int main() { const char str[] = "And the Raven, never flitting, still is sitting, still is sitting"; const char ch = 'l'; char *ret; ret = mymemchr(str, ch, strlen(str)); printf("String after |%c| is - |%s|\n", ch, ret); printf("%d",sizeof(NULL)); return(0); } |