11

How to memcpy the two dimensional array in C:

I have a two dimensional array:

int a[100][100];

int c[10][10];

I want to use memcpy to copy the all the values in array c to array a, how to do this using memcpy?

int i;
for(i = 0; i<10; i++)
{
    memcpy(&a[i][10], c, sizeof(c));
}

is this correct?

jinawee
  • 492
  • 5
  • 16
user2131316
  • 3,111
  • 12
  • 39
  • 53

3 Answers3

13

That should work :

int i;
for(i = 0; i<10; i++)
{
    memcpy(&a[i], &c[i], sizeof(c[0]));
}
Fabien
  • 12,486
  • 9
  • 44
  • 62
3

It should actually be:

for(i = 0; i < 10; ++ i)
{
  memcpy(&(a[i][0]), &(c[i][0]), 10 * sizeof(int));
}
cgledezma
  • 612
  • 6
  • 11
1

I don't think it's correct, no.

There's no way for memcpy() to know about the in-memory layout of a and "respect" it, it will overwrite sizeof c adjacent bytes which might not be what you mean.

If you want to copy into a "sub-square" of a, then you must do so manually.

unwind
  • 391,730
  • 64
  • 469
  • 606