Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++로 memcpy() 및 memmove() 작성

<시간/>

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!