Dia Egg - Shugo Chara

C

memchr 함수의 구현 (mem함수와 str함수의 차이)

별ㅇI 2023. 10. 16. 22:16
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