memcpy() 함수는 소스 위치에서 대상 위치로 데이터를 복사하는 데 사용되는 내장 함수입니다.
memcpy 함수의 프로토타입 -
void * memcpy(void *destination_location, void *source_location, size_t 크기)
원본에서 대상으로 데이터를 문자별로 복사합니다.
솔루션 구현을 보여주는 프로그램,
예시
#include<stdio.h>
#include<string.h>
void MemcpyFunc(void *dest, void *src, size_t n){
char *dataS = (char *)src;
char *dataD = (char *)dest;
for (int i=0; i<n; i++)
dataD[i] = dataS[i];
}
int main() {
char dataS[] = "Hello!";
char dataD[100];
MemcpyFunc(dataS, dataD, strlen(dataS)+1);
printf("Copied string is %s", dataD);
return 0;
} 출력
Copied string is Hello!
memmove() 함수는 memcpy()와 유사하며, 또한 char 단위로 소스에서 대상 char로 데이터를 복사합니다. 소스와 목적지가 겹칠 때 발생하는 memcopy() 문제를 극복합니다.
memmove()에서 중복 소스 및 대상 문제를 처리하는 임시 배열을 사용합니다.
솔루션 구현을 보여주는 프로그램,
예시
#include<stdio.h>
#include<string.h>
void MemcpyFunc(void *dest, void *src, size_t n){
char *dataS = (char *)src;
char *dataD = (char *)dest;
char *temp = new char[n];
for (int i=0; i<n; i++)
temp[i] = dataS[i];
for (int i=0; i<n; i++)
dataD[i] = temp[i];
}
int main() {
char dataS[] = "Hello!";
char dataD[100];
MemcpyFunc(dataS, dataD, strlen(dataS)+1);
printf("Moved string is %s", dataD);
return 0;
} 출력
Moved string is Hello!