2012-06-15 11 views

उत्तर

19

क्योंकि आप इस तरह से प्रारंभ नहीं कर सकते हैं, आपको प्रारंभिक अभिव्यक्ति मान के रूप में निरंतर अभिव्यक्ति की आवश्यकता है। साथ बदलें:

int main (void) { 
    char testStr[50] = "Hello, world!"; 
    char revS[50]; strcpy (revS, testStr); 
    : 
} 

या, यदि आप वास्तव में initialisation चाहते हैं, आप की तरह कुछ का उपयोग कर सकते हैं:

#define HWSTR "Hello, world!" 
int main (void) { 
    char testStr[50] = HWSTR; 
    char revS[50] = HWSTR; 
    : 
} 

यह अपने स्रोत में कम से कम दोहराव के साथ एक निरंतर अभिव्यक्ति प्रदान करता है।

2

char[] के लिए प्रारंभकर्ता या तो एक शाब्दिक स्ट्रिंग या {1,2,3,4} जैसा कुछ होना चाहिए। इसे किसी अन्य चर का नाम होने की अनुमति नहीं है।

7

Arrays असाइन करने योग्य नहीं हैं।

आप memcpy का उपयोग करना चाहिए revS

memcpy(revS,testStr,50); 
4

केवल निरंतर भाव को testStr से सामग्री की प्रतिलिपि करने के लिए सरणियों प्रारंभ करने, testStr के अपने प्रारंभ में के रूप में इस्तेमाल किया जा सकता।

आप revS को अन्य सरणी चर के साथ शुरू करने की कोशिश कर रहे हैं, जो निरंतर अभिव्यक्ति नहीं है। यदि आप पहली स्ट्रिंग की सामग्री को दूसरे में कॉपी करना चाहते हैं, तो आपको strcpy का उपयोग करना होगा।

1

आप

char revS[50] = testStr; 

जो गलत है जब से तुम char को char * असाइन नहीं कर सकते कर रहे हैं।

revS = testStr; आज़माएं इसे काम करना चाहिए।

0

जब तक आप दूसरी सरणी से छेड़छाड़ पर योजना तुम भी एक सूचक का उपयोग कर सकते हैं:

int main(void){ 
    char textStr[50] = "hello worlds!"; 
    char *revS = textStr; 
    printf("%s\n", revS); 

}

आप आप के साथ सरणी में एक विशिष्ट स्थान को इंगित कर सकते हैं सच में पागल प्राप्त करना चाहते हैं संदर्भ ऑपरेटर:

int main(void){ 
    char textStr[50] = "hello worlds!"; 
    char *revS = &textStr[5]; 
    printf("%s\n", revS); 
} 
संबंधित मुद्दे