मेरे पास दो स्ट्रिंग्स, str1 और str2 हैं। मैं ढेर में एक जगह पर उनके साथ संयोजन करना चाहता हूँ। मैं का उपयोग कर उनके लिए अंतरिक्ष malloc:एक स्ट्रिंग के लिए malloc स्थान के लिए सही तरीका और फिर उस स्थान में अक्षर डालें?
char *concat = (char*) malloc(strlen(str1) + strlen(str2) + 1);
मैं सिर्फ कर सकते हैं:
strcat(concat, str1);
strcat(concat, str2);
और concat मुझे concatted दो तार के साथ ढेर पर जगह दे देंगे? मैं पूछ रहा हूं क्योंकि ऐसा लगता है कि स्ट्रैट वास्तव में malloc का उपयोग करके आवंटित स्थान के अंत में str1 जोड़ देगा। क्या ये सही है? तो, फिर, str1 स्थिति strlen (str1) + strlen (str2) + 1.
कारण मैं पूछ रहा हूं कि मैं ऊपर की विधि का उपयोग कर रहा हूं, लेकिन मुझे valgrind में त्रुटि मिल रही है: सशर्त कूद या चाल uninitialised मूल्य (रों)
+1 निश्चित रूप से ऐसा करने का एक बहुत अच्छा तरीका है। मैं शायद 'memcpy() 'की बजाय' memmove()' का उपयोग करता हूं, हालांकि, इस स्थिति में 'memcpy() 'सुरक्षित है, लेकिन यह हमेशा सुरक्षित नहीं है लेकिन' memmove()' हमेशा सुरक्षित है। –
यहां 'memmove' का उपयोग न करें; यह भ्रमित करने वाला है। 'Memmove' के किसी भी उपयोग को दस्तावेज़ में कार्य करना चाहिए कि आप कुछ अलग और असामान्य कर रहे हैं। अगर मैंने यहां 'memmove' देखा है तो मैं यह समझने की कोशिश कर रहा हूं कि # * $ @ किसी ने इसका इस्तेमाल क्यों किया और यदि कुछ भी ख़राब हो रहा था ... –