使用memcpy方法

使用memcpy方法,c,arrays,pointers,memcpy,C,Arrays,Pointers,Memcpy,我正在寻找如何编写像memcpy这样的函数。将整数或字符从一个数组复制到另一个数组的方法。 我的意思是,使用memcpy,而不使用它。但在我的情况下,它不起作用 void Memcpy( void *from, void *to, int dimension, int length ) { if(dimension == sizeof(char)){ char *copyFrom = (char *)from; char *copyTo = (char *)to;

我正在寻找如何编写像memcpy这样的函数。将整数或字符从一个数组复制到另一个数组的方法。 我的意思是,使用memcpy,而不使用它。但在我的情况下,它不起作用

void Memcpy( void *from, void *to, int dimension, int length ) {

   if(dimension == sizeof(char)){
      char *copyFrom = (char *)from;
      char *copyTo = (char *)to;

      for(int i = length; i < length; i++)
         copyTo[i] = copyFrom[i];
   }


   if(dimension == sizeof(int)){
      int *copyFrom = (int *)from;
      int *copyTo = (int *)to;

      for(int i = length; i < length; i++)
         copyTo[i] = copyFrom[i];
   }
}

{谢谢你的帮助=}

你想要的东西是用memcpy真正实现的,没有必要重新发明它。为了方便起见,只要数组是静态分配的,就可以用数组的copy_包装它,甚至可以用copy2包装数组的copy_

void copyOfArray( void *from, void *to, int dimension, int length ) {
     memcpy(to, from, dimension * length);
}
#include <string.h>
#include <stdio.h>

#define copy2(src, dst, count, shift) copy_of_array(src, dst, count, sizeof(src[0]), shift)

copy_of_array (void * src,
               void * dst,
               int    count,
               int    elem_size,
               int    shift)
{
  memcpy (dst, (char*)src + elem_size * shift, count * elem_size);
}

int main() {
  int i;
  int ione[4] = { 1, 2, 3, 4};
  int itwo[2] = { 0, 0 };
  char cone[4] = { 'a', 'b', 'c', 'd'};
  char ctwo[2] = { 'x', 'y' };
  copy_of_array(ione, itwo, 1, sizeof(int), 3);
  for (i=0; i<2; i++ )
    printf("%d ", itwo[i] );

  copy2(cone, ctwo, 1, 3);
  for (i=0; i<2; i++ )
    printf("%c ", ctwo[i] );
}

欢迎来到SO。你忘了说你被困在哪里了。你到底有什么问题?向我们展示您当前在复制功能方面所做的努力,我们可以帮助解决问题。实际上,memcpy完成了这项工作。您是否正在尝试重新创建memcpy?是的,但不使用它您是否已经阅读和使用了?