2013-06-03 94 views
8

如何memcpy的C中的二維數組:如何memcpy C中的二維數組?

我有一個二維數組:

int a[100][100]; 

int c[10][10]; 

我想用memcpy到所有的值數組複製C到數組,如何使用memcpy做到這一點?

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

這是正確的嗎?

+1

這取決於你想要的值去。它看起來不像你想要的。 –

+6

你在'a'中有100倍的容量。你想要保存'c'的哪一個元素? – simonc

+0

更喜歡'sizeof(c [i])',非? –

回答

10

這應該工作:

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

我不認爲這是正確的,沒有。

memcpy()沒有辦法知道a的內存中佈局和「尊重」它,它會覆蓋sizeof c相鄰的字節,這可能不是你的意思。

如果您想要複製到a的「子平方」,那麼您必須手動完成。

2

它實際上應該是:

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

當我嘗試&(c [i] [0])時,它告訴我該錯誤:'*(c + 924u)[0]' – user2131316

+0

'中的'operator []'不匹配您確定輸入的內容是正確的?我的編譯器告訴我什麼都沒有。你在使用哪種編譯器? – cgledezma