如何将一维数组复制到另一个二维数组的一部分,反之亦然?

时间:2011-07-05 12:25:12

标签: c arrays

基本上,我有三个数组,CQueue(2D数组),PQueue(2D数组,与CQueue相同数量的数组,但每个数组包含两倍的值)和CC(标准数组,如只要CQueue中的数组)。我想要实现的是在CQueue中获取特定数组,复制它以使CC读取与CQueue完全相同,并且PQueue中等效数组的前半部分也读取相同的数组

我被建议朋友使用memcpy,这似乎很好,但没有解决问题。我不知道问题是否在于我可能使用memcpy错误或者是否还有其他问题。以下是代码相关部分的简化版本。

int (main)
{
  int CQueue[numberOfArrays][halfSize]
  int PQueue[numberOfArrays][size]
  int CC[halfSize]

  for (i = 0; i < numberOfArrays]; i++)
  {
    memcpy (CC, CQueue[i], halfSize)
    memcpy (PQueue[i], CQueue[i], size)
  }
}

非常感谢所提供的任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

memcpy的第三个参数是以字符复制的数量(即大多数平台上的字节数)。所以你需要做一些事情:

memcpy(CC, CQueue[i], halfSize*sizeof(*CC));

答案 1 :(得分:0)

memcpy复制字节,而不是整数。您需要将要复制的元素数乘以每个此类元素的大小

memcpy(dst, src, elems * sizeof elem);

代码

    memcpy (CC, CQueue[i], halfSize * sizeof *CC);
    memcpy (PQueue[i], CQueue[i], size * sizeof *PQueue[i]);