How to memcpy a part of a two dimensional array in C?

26,527

Solution 1

That should work :

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

Solution 2

It should actually be:

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

Solution 3

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.

Share:
26,527
user2131316
Author by

user2131316

Updated on July 16, 2022

Comments

  • user2131316
    user2131316 almost 2 years

    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?