मैं कुछ घंटों के लिए ट्यूटोरियल से संबंधित सी ट्यूटोरियल और किताबों के साथ संघर्ष कर रहा हूं लेकिन मैं वास्तव में जानना चाहता हूं कि यह बनने के बाद एक बार पॉइंटर बदलना संभव है।सी में चार की स्ट्रिंग को संशोधित करना संभव है?
यह है कि मैं क्या करने की कोशिश की है:
char *a = "This is a string";
char *b = "new string";
a[2] = b[1]; // Causes a segment fault
*b[2] = b[1]; // This almost seems like it would work but the compiler throws an error.
तो वहाँ तार के बजाय सूचक पतों के अंदर मूल्यों को बदलने के लिए किसी भी तरह से है?
धन्यवाद
संपादित करें:
धन्यवाद अपने जवाब के लिए हर किसी को। यह अब और अधिक समझ में आता है। यह विशेष रूप से समझ में आता है कि कभी-कभी यह ठीक काम क्यों कर रहा था और दूसरी बार काम नहीं कर रहा था। क्योंकि कभी-कभी मैं एक चार पॉइंटर पास करता हूं और दूसरी बार एक चार सरणी (चार सरणी ठीक काम करती है)।
अंतिम खंड ने मुझे बहुत कुछ समझाया कि इसे क्यों पढ़ा जाना चाहिए। धन्यवाद। – CDR
-1: कॉन्स्ट char * का उपयोग करने के लिए नहीं कहता है, और कुछ भी गारंटी नहीं देता है कि शाब्दिक तार निष्पादन योग्य स्मृति में संग्रहीत हैं। –
मुझे आपको दिए गए दो समाधानों के लिए कॉन्स की आवश्यकता नहीं है - अगर स्ट्रिंग को संकलित समय पर जाना जाता है, और निष्पादन योग्य में संकलित किया जाता है - यह कहां संग्रहीत होगा? जीसीसी में, अगर मैं या तो चार * ए = "हेलो" लिखता हूं; या char b [] = "हैलो।" ;, फिर असेंबली आउटपुट "एलसी 0: \t .ascii" हेलो। \ 0 " एलसी 1: \t .ascii" हैलो। \ 0 "" दोनों निष्पादन योग्य स्मृति में हैं .. यह कब नहीं है? –