2013-06-03 20 views
8

Jak memcpy dwuwymiarowej tablicy w C:jak zapamiętywać dwuwymiarową tablicę w C?

Mam dwuwymiarowej tablicy:

int a[100][100]; 

int c[10][10]; 

chcę użyć memcpy aby skopiować wszystkie wartości w tablicy c do tablicy A, jak zrobić to za pomocą memcpy?

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

czy to prawda?

+1

To zależy od tego, gdzie chcesz iść wartości. Wygląda na to, że nie do końca to, czego prawdopodobnie chcesz. –

+6

Masz 100 razy więcej niż "a". Które elementy 'a' chcesz posiadać kopię' c'? – simonc

+0

Więcej jak 'sizeof (c [i])', non? –

Odpowiedz

10

To powinno działać:

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

Nie sądzę, że to jest poprawne, nie.

Nie ma mowy o memcpy() wiedzieć o układzie w pamięci z a i „szacunku” to będzie go zastąpić sizeof c sąsiadujących bajtów, które może nie być tym, co masz na myśli.

Jeśli chcesz skopiować do "pod-kwadratu" z a, musisz to zrobić ręcznie.

2

To powinno być w rzeczywistości:

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

kiedy próbuję zrobić & (c [i] [0]), mówi mi, że błąd: brak dopasowania dla 'operatora []' w '* (c + 924u) [0]' – user2131316

+0

Jesteś pewien, że wpisałeś to dobrze? Mój kompilator nic mi nie mówi .. Który kompilator używasz? – cgledezma

Powiązane problemy