Modifying C string constants? -


संभव डुप्लिकेट:

मैं उस फ़ंक्शन को लिखना चाहता हूं जो उसमें दिए गए स्ट्रिंग को उलट देता है। लेकिन मैं नहीं कर सकता। अगर मैं एक अक्षर सरणी के साथ doRverse फ़ंक्शन (नीचे कोड देखें) की आपूर्ति करता हूं, तो मेरा कोड अच्छी तरह से काम करता है।

मुझे पता नहीं लगा कि यह क्यों काम नहीं करता है। मैं str [0] में doReverse तक पहुँचने में सक्षम हूं, लेकिन मैं एक चार सूचक का उपयोग करके सरणी के किसी भी मूल्य को परिवर्तित नहीं कर सकता कोई भी विचार?

  शून्य करेंदेयरे (चार * str) {str [0] = 'b'; } शून्य मुख्य (शून्य) {char * str = "abc"; doReverse (एसटीआर); पुट (एसटीआर); }  

अपडेट:

मुझे पता है कि किसी चरित्र सरणी को पास करके एक रिवर्स फ़ंक्शन कैसे लिखना है:

  शून्य रिवर्स 1 (चार पी []) {int i, temp, y; के लिए (i = 0, y = स्ट्रेलन (पी); i & lt; y; ++ i, --y) {temp = p [y-1]; पी [वाई -1] = पी [आई]; पी [आई] = अस्थायी; }}  

लेकिन, मैं एक और संस्करण लिखना चाहता हूं जो एक पैरामीटर के रूप में एक चार सूचक मिलता है।

सबसे सरल उपाय str को

  char str [] = "abc" की घोषणा को बदलना है;  

यह बनाता है str चारों की एक सरणी जो स्ट्रिंग "एबीसी" के लिए आरंभ की जाती है वर्तमान में आपके पास str एक स्ट्रिंग शब्दशः द्वारा वर्णित स्ट्रिंग पर इंगित करने के लिए शुरुआती-से-चार के रूप में आरंभ किया गया है। एक महत्वपूर्ण अंतर है: स्ट्रिंग लीटरल केवल पढ़ने योग्य हैं, जहां उन्हें संचयकर्ता को स्टोर करने के लिए अधिकतम लचीलापन दिया जाता है; यह उन्हें संशोधित करने के लिए यूबी है। लेकिन चारों के सरणियां अस्थिर हैं, और इसलिए उनको संशोधित करना ठीक है।

पी एस मुख्य () एक int देता है।


Comments