2013-06-03 4 views
8

सी में दो आयामी सरणी memcpy कैसे करें:सी में दो आयामी सरणी को कैसे memcpy करने के लिए?

int a[100][100]; 

int c[10][10]; 

मैं सरणी के लिए ग memcpy उपयोग करने के लिए सरणी में सभी मूल्यों को कॉपी करने के लिए एक, कैसे करना चाहते हैं:

मैं एक दो आयामी सरणी है memcpy का उपयोग कर यह करो?

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

क्या यह सही है?

+1

कि जहां मूल्यों जाना चाहता हूँ पर निर्भर करता है। ऐसा लगता है कि आप शायद इतना नहीं चाहते हैं। –

+6

आपके पास 'ए' में 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

जब मैं करने की कोशिश करता हूं और (सी [i] [0]), यह मुझे बताता है कि त्रुटि: 'ऑपरेटर []' के लिए कोई मिलान नहीं है * * (सी + 9 24u) [0] ' – user2131316

+0

क्या आप वाकई इसे सही टाइप करते हैं? मेरा कंपाइलर मुझे कुछ नहीं बताता .. आप किस कंपाइलर का उपयोग कर रहे हैं? – cgledezma

संबंधित मुद्दे