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!