एक के लिए, आप स्ट्रिंग अक्षर को संशोधित नहीं कर सकते हैं। यह अपरिभाषित व्यवहार है।
ठीक करने के लिए है कि आप str
एक स्थानीय सरणी बना सकते हैं:
char str[] = "First string";
अब, आप एक दूसरी समस्या है, कि str
इतना बड़ा str2
धारण करने के लिए नहीं है। तो आपको इसकी लंबाई बढ़ाने की आवश्यकता होगी। अन्यथा, आप str
से अधिक हो जाएंगे - जो कि अपरिभाषित व्यवहार भी है।
इस दूसरी समस्या को पाने के लिए, आपको या तो str
कम से कम str2
बनाने की आवश्यकता है। या यह गतिशील रूप से आवंटित:
char *str2 = "Second string";
char *str = malloc(strlen(str2) + 1); // Allocate memory
// Maybe check for NULL.
strcpy(str, str2);
// Always remember to free it.
free(str);
इस Vlas (C99 में) को शामिल करने के लिए और आवंटन ढेर अन्य अधिक सुरुचिपूर्ण तरीके हैं, लेकिन मैं उन पर नहीं जाऊंगा के रूप में उनके उपयोग को कुछ हद तक संदिग्ध है।
रूप @SangeethSaravanaraj टिप्पणी में कहा, हर कोई #import
याद किया। यह #include
होना चाहिए:
#include <stdio.h>
#include <string.h>
ठीक है, 'strlen (एसटीआर) की जरूरत है
क्या हर कोई '# import' गायब है? !! –
@ संगीत सरवनराज हां, मैं इसे खुद पर विश्वास नहीं कर सकता। lol हर कोई इसे याद किया ... – Mysticial