Computer >> Máy Tính >  >> Lập trình >> C ++

Viết memcpy () và memmove () của riêng bạn trong C ++

memcpy () function là một hàm có sẵn được sử dụng để sao chép dữ liệu từ vị trí nguồn đến vị trí đích.

Nguyên mẫu của hàm memcpy -

void * memcpy (void * destination_location, void * source_location, size_t size)

Chúng tôi sẽ từng ký tự sao chép dữ liệu từ nguồn đến đích.

Chương trình hiển thị việc thực hiện giải pháp,

Ví dụ

#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;
}

Đầu ra

Copied string is Hello!

memmove () tương tự như memcpy (), nó cũng sao chép dữ liệu từ nguồn đến đích bởi char. Nó khắc phục sự cố memcopy () xảy ra khi nguồn và đích chồng chéo nhau.

Trong memmove () của chúng tôi, chúng tôi sẽ sử dụng một mảng tạm thời để xử lý vấn đề nguồn và đích chồng chéo.

Chương trình hiển thị việc thực hiện giải pháp,

Ví dụ

#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;
}

Đầu ra

Moved string is Hello!