헤더 파일
<string.h>
사용 목적
메모리 B를 특정 길이(byte 단위) 만큼 메모리 A에 복사한다.
프로토타입과 매개변수
void *memcpy(void *dest, const void *src, size_t n);
1. void *dest : src를 복사해서 넣고자 하는 주소
2. const void *src : 복사 대상 주소
3. size_t n : 복사 하고자 하는 크기(byte단위)
반환값
dest의 첫 주소값
함수의 원리
이해를 돕기 위해 같은 동작을 하는 함수를 만든 것입니다.
void *ft_memcpy(void *dest, const void *src, size_t n)
{
unsigned int i;
i = 0;
if (n == 0 || dest == src)
// 복사하고자 하는 길이가 0이거나 자기 자신을 복사하는 경우 dest를 그대로 반환
return (dest);
while (i < n) // n크기 만큼
{
*(char *)dest = *(char *)src; // 복사
dest++;
src++;
i++;
}
return (dest - i); // 처음 dest 주소를 반환
}
사용 예시
#include <string.h>
#include <stdio.h>
int main(void)
{
char src[] = "Life is FortyTwo";
char dest[30];
memcpy (dest, src, (strlen(src) + 1)); //NULL값까지 복사하고 싶어서 1을 더해줌
printf ("%s\n", dest);
return (0);
}
Life is FortyTwo
'C언어 > 함수' 카테고리의 다른 글
memset (0) | 2020.09.25 |
---|---|
memmove (0) | 2020.08.10 |
memccpy (0) | 2020.08.10 |
memchr (0) | 2020.08.10 |
memcmp (0) | 2020.08.10 |
strlen (0) | 2020.08.10 |