728x90
반응형
memchr 함수
- string.h헤더 파일에 속한 함수.
- 원형은 void *memchr(const void *s, int c, size_t n)을 따른다.
- 문자열 s에서 c의 첫번째 발생을 찾는다.
- 찾으면 그 포인터를 반환하고 찾지못하면 null을 반환.
mem함수와 str함수의 차이
str함수는 문자열을 검사하기 위한 함수라 '\0' 로, 혹은 넘겨 받은 길이를 통해 종료시점을 알 수 있다.
하지만 mem함수는 숫자, 구조체, 문자열 등 다양한 구조에서 사용하기 위한 목적으로 만들어진 함수이기 떄문에 매개변수로 받는 size만을 콩해 종료시점을 가진다.
memchr 함수의 구현
void *ft_memchr(const void *s, int c, size_t n)
{
size_t i;
void *tmp;
i = 0;
tmp = (void *)s;
while (i < n)
{
if ((((unsigned char *)tmp)[i]) == (unsigned char)c)
return (&tmp[i]);
i++;
}
return (0);
}
// #include <string.h>
// #include <stdio.h>
// int main(void)
// {
// char *str1 = "starComputer00";
// char c1 = 'a';//있는거
// printf("test1 : memchr_lct :%p" , memchr(str1, c1, 14));
// printf("\ntest1 : memchr :%s" , (char *)(memchr(str1, c1, 14)));
// printf("\ntest1 : ft_memchr_lct :%p" , ft_memchr(str1, c1, 14));
// printf("\ntest1 : ft_memchr :%s" , (char *)(ft_memchr(str1, c1, 14)));
// printf("\n");
// char c2 = '\0';//'\0'
// printf("\ntest2 : memchr_lct :%p" , memchr(str1, c2, 14));
// printf("\ntest2 : memchr :%s" , (char *)(memchr(str1, c2, 14)));
// printf("\ntest2 : ft_memchr_lct :%p" , ft_memchr(str1, c2, 14));
// printf("\ntest2 : ft_memchr :%s" , (char *)(ft_memchr(str1, c2, 14)));
// printf("\n");
// char c3 = 'S';//없는거
// printf("\ntest3 : memchr_lct :%p" , memchr(str1, c3, 14));
// printf("\ntest3 : memchr :%s" , (char *)(memchr(str1, c3, 14)));
// printf("\ntest3 : ft_memchr_lct :%p" , ft_memchr(str1, c3, 14));
// printf("\ntest3 : ft_memchr :%s" , (char *)(ft_memchr(str1, c3, 14)));
// }
728x90
반응형
'C' 카테고리의 다른 글
strnstr 함수의 구현 (0) | 2023.10.17 |
---|---|
memcmp 함수의 구현 (2) | 2023.10.17 |
strncmp 함수의 구현 (2) | 2023.10.16 |
strrchr 함수의 구현 (0) | 2023.10.16 |
strchr 함수의 구현 (2) | 2023.10.16 |