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

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

Ở đây chúng ta sẽ xem cách triển khai hàm memcpy () trong C. Hàm memcpy () được sử dụng để sao chép một khối dữ liệu từ vị trí này sang vị trí khác. Cú pháp của memcpy () như sau -

void * memcpy(void * dest, const void * srd, size_t num);

Để tạo memcpy của riêng mình, chúng ta phải gõ địa chỉ đã cho vào char *, sau đó sao chép dữ liệu từ nguồn đến từng byte đích. Chỉ cần xem qua đoạn mã sau để hiểu rõ hơn.

Ví dụ

#include<stdio.h>
#include<string.h>
void custom_memcpy(void *dest, void *src, size_t n) {
   int i;
   //cast src and dest to char*
   char *src_char = (char *)src;
   char *dest_char = (char *)dest;
   for (i=0; i<n; i++)
      dest_char[i] = src_char[i]; //copy contents byte by byte
}
main() {
   char src[] = "Hello World";
   char dest[100];
   custom_memcpy(dest, src, strlen(src)+1);
   printf("The copied string is %s\n", dest);
   int arr[] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
   int n = sizeof(arr)/sizeof(arr[0]);
   int dest_arr[n], i;
   custom_memcpy(dest_arr, arr, sizeof(arr));
   printf("The copied array is ");
   for (i=0; i<n; i++)
      printf("%d ", dest_arr[i]);
}

Đầu ra

The copied string is Hello World
The copied array is 10 20 30 40 50 60 70 80 90