C
[C] 104 메모리를 복사하는 함수 만들기
qkrwngus
2021. 1. 28. 19:35
Desc :
void* 형은 크기가 정해지지 않은 포인터 형
형변환해서 사용한다
Source Code :
#include <stdio.h>
#include <string.h>
struct tagM1
{
int x;
int y;
char buffer[30];
};
void* My_memcpy(void* dst, const void* src, unsigned int count);
void main()
{
struct tagM1 x1, x2;
x1.x = 5;
x1.y = 10;
strcpy(x1.buffer, "memory copy");
My_memcpy(&x2, &x1, sizeof(x1));
puts(x2.buffer);
}
void* My_memcpy(void* dst, const void* src, unsigned int count)
{
void* ret = dst; // dst의 주소를 저장하는 포인터 변수
while (count--) //count~1까지 반복
{
*(char*)dst = *(char*)src; // src가 가리키는 문자형 번지에 있는 값을 dst가 가리키는 문자형번지에 대입
dst = (char*)dst + 1; // 문자형크기만큼 포인터 증가
src = (char*)src + 1;
}
return ret;
}
Result :