[42 Seoul] memccpy를 알아보자

youngmki·2021년 5월 4일
0

Libft

목록 보기
4/5
post-thumbnail

1. 구조

#include <string.h>
	void	*memccpy(void *dst, const void *src, int c, size_t n)

2. 기능

메모리의 값을 src에서 dst로 복사합니다. (memcpy와 동일합니다)
단, c라는 값을 만나게 되면, 함수가 종료되며 반환값으로 마지막 복사 직후의 포인터가 반환됩니다.

3. Parameter

1) void *dst

복사 받을 메모리의 시작을 가리키는 포인터입니다.
함수 내부적으로 unsigned char로 처리되어 작성됩니다.

2) const void *src

복사를 할 메모리의 시작을 가리키는 포인터입니다.
마찬가지로 함수 내부적으로 unsigned char로 처리되어 작성됩니다.

3) int c

c값을 만나게 되면, 복사를 해당 포인터까지만 진행하고, 함수를 종료합니다.

4) size_t len

복사할 메모리의 크기를 나타냅니다.

4. 사용 예제

  • 앞의 memcpy와 동일하게 동작하되, 새로 생긴 매개 변수에 대해서만 차이가 있음을 확인할 수 있습니다.

1) 구분자를 활용한 경우

int main()
{
	char dst[10] = "qqqqqqq";
	char src[10] = "aaaa!aa";
	
	printf("Before processed	: %s\n", dst);

	ft_memccpy(dst, src, '!', sizeof(dst));
    	printf("processed		: %s\n", dst);
}

2) 구분자가 활용되지 않은 경우

int main()
{
	char dst[10] = "qqqqqqq";
	char src[10] = "aaaa!aa";
	
	printf("Before processed	: %s\n", dst);

	ft_memccpy(dst, src, '@', sizeof(dst));
	printf("processed		: %s\n", dst);
}

관심 있을 만한 포스트

0개의 댓글