2010-07-24 17 views
15

अगर मैं ऐसा तरह दो चार सरणियों है:दो चार सरणी को संयोजित करें?

char one[200]; 
char two[200]; 

और मैं तो जो इन concatenates मैं इसे कैसे कर सकता है एक तिहाई बनाने के लिए करना चाहते हैं?

मैं कोशिश की है:

char three[400]; 
strcpy(three, one); 
strcat(three, two); 

लेकिन यह काम करने के लिए प्रतीत नहीं होता। यह होता है अगर one और two इस तरह सेटअप कर रहे हैं:

char *one = "data"; 
char *two = "more data"; 

किसी को भी कैसे इसे ठीक करने के किसी भी विचार है?

धन्यवाद

+1

उपयोग कर सकते हैं जब आप पहली बार सरणियों के लिए एक स्ट्रिंग आवंटित के रूप में। आपने अभी निर्दिष्ट किया है कि स्ट्रिंग कितनी देर तक हो सकती है, किसी भी मूल्य को असाइन नहीं किया गया है। – Chris

+1

क्या वे चार सरणी हैं, या वे तार हैं? स्ट्रिंग्स एक विशेष सम्मेलन के साथ चार सरणी हैं जो '\ 0'' मौजूद होना चाहिए और स्ट्रिंग के अंत को इंगित करता है। सामान्य गैर-स्ट्रिंग चार सरणी की प्रतिलिपि बनाने के लिए, 'memmove' का उपयोग करें। –

+0

और वैसे, यदि आप वास्तव में तारों का मतलब रखते हैं, तो '39 9'' तीन' के आकार के लिए पर्याप्त है। –

उत्तर

7

'एक' और 'दो' एक '\ 0' समाप्त स्ट्रिंग शामिल नहीं करता है, तो आप इस का उपयोग कर सकते हैं:

memcpy(tree, one, 200); 
memcpy(&tree[200], two, 200); 

यह अनदेखी स्ट्रिंग समाप्त चार दोनों एक और दो से सभी वर्ण की प्रतिलिपि बनाएगा '\ 0'

+0

स्मृति? निश्चित रूप से आप memcpy मतलब है, हाँ? कोई बात नहीं, मैं इसे स्वयं ठीक कर दूंगा :-) – paxdiablo

+0

उनमें वर्णों को खेद है, मुझे इसका उल्लेख करना चाहिए था। –

+0

@ पास्कल क्यूओक: string.h –

4

strcpy उम्मीद सरणियों द्वारा '\ 0' समाप्त हो। स्ट्रिंग्स को शून्य में शून्य से समाप्त कर दिया जाता है। दूसरा दृष्टिकोण क्यों काम करता है और पहले नहीं करता है।

+0

मैं बल्कि '\ 0' कहूंगा या मैं गलत हूं? शून्य शून्य चरित्र (एनयूएल) के समान नहीं है। –

+0

हां, संभोग। भागने कहीं खो गया :-) – EricSchaefer

0

आप आसानी से पहले एक और साथ ही लंबे समय तक काम करना चाहिए sprintf

char one[200] = "data"; // first bit of data 
char two[200] = "more data"; // second bit of data 
char three[400]; // gets set in next line 
sprintf(three, "%s %s", one, two); // this stores data 
+0

यह ओपी के गैर-कामकाजी 'strcpy'/'strcat' कोड के बराबर है (सिवाय इसके कि यह एक स्थान भी जोड़ता है)। यह कुछ भी जवाब नहीं देता है। – melpomene

+0

@melpomene nope। यह उस के लिए समतुल्य नहीं है। यह तीन से एक सेट करता है और दो एक साथ जुड़ जाते हैं। और यह काम करता है। ive ने इसे कई बार इस्तेमाल किया और यह मुझे सफलता लाया। तो इसके बारे में अशिष्ट न हों और स्वीकार करें कि यह एक अच्छा कामकाजी जवाब है! – OverloadedCore

+0

"* यह तीन से एक सेट करता है और दो एक साथ जुड़ जाते हैं। और यह काम करता है। *" - ओपी के कोड की तरह। यह 'strcpy (तीन, एक) के बराबर नहीं है; स्ट्रैट (तीन, दो); '? – melpomene

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