मुझे लगता है कि आप तारों को जोड़ना चाहते हैं। यदि हां, तो हाँ। आपको यह जानना होगा कि आप इसे आवंटित करने से पहले कितनी जगह चाहते हैं।
वास्तव में, आप realloc
का उपयोग कर सकते हैं, लेकिन यह वास्तव में हर बार पिछली स्ट्रिंग की प्रतिलिपि बनाता है, और बहुत कम प्रभावी है।
कुछ कोड: (char *s[]
और int n
संभालने)
int i,l=1;
for (i=0;i<n;i++) l+=strlen(s[i]);
char *r=malloc(l);
r[0]=0;
for (i=0;i<n;i++) strcat(r,s[i]);
संपादित करें: कुछ टिप्पणियों के रूप में, strcat
जब आप लंबाई पता अप्रभावी है। (। मैं अभी भी इसे पसंद करते है, क्योंकि यह एक बार में स्मृति को आबंटित) कुछ और अधिक प्रभावी कोड है:
int i,l=1;
for (i=0;i<n;i++) l+=strlen(s[i]);
char *r=malloc(l);
char *d=r;
for (i=0;i<n;i++) {
srtcpy(d,s[i]);
d+=strlen(s[i]);
}
कुछ कोड हमें यह समझने में मदद करेंगे कि आप क्या पूछ रहे हैं। – user7116
लगता है जैसे आप सी स्ट्रिंग्स की सरणी कॉपी करना चाहते हैं। क्या वह सही है? – vitaut
मैं अंततः सरणी में स्ट्रिंग को एक स्ट्रिंग में जोड़ना चाहता हूं। गंतव्य स्ट्रिंग के लिए कितनी मेमोरी स्पेस आवंटित करने की आवश्यकता है यह जानने की आवश्यकता है। मुझे नहीं पता कि कैसे आप जानते हैं कि लूप के लिए समाप्त स्थिति के रूप में क्या रखा जाए, यानी सरणी की लंबाई क्या है। –