C passing char array to function, compute with another char array and copy -


मैं ऐसा कुछ करना चाहूंगा:

  #include & lt; stdio.h & gt ; Char * myfunction (चार * में); शून्य myfunction2 (चार * में, const char ** सामग्री); Int main () {char * name = "aName"; चार * परिणाम = myfunction (नाम); वापसी 0; } Char * myfunction (char * in) {const char * test = NULL; Myfunction2 (में, और परीक्षण); वापसी परीक्षा; // मैं परीक्षण के मान को वापस करना चाहूंगा} शून्य myfunction2 (चार * में, const char ** सामग्री) {char input [1024]; // input * content = input भरने के लिए कुछ चीजें करें; }  

लेकिन मैं ऐसा करने में सक्षम नहीं हूं, कभी-कभी कुछ अजीब अक्षर मुद्रित होते हैं ...

आपके उत्तर के लिए धन्यवाद, मैं इसे अच्छी तरह समझता हूं , लेकिन मैं अपनी समस्या के दूसरे पक्ष पर फंस गया हूँ। मैंने अपने उपयोग के मामले को ठीक से नहीं लिखा, इसलिए मैंने इसे पूरा करने के लिए संपादित किया।

सबसे स्पष्ट myfunction ();

  • गलत कॉन्स्ट के रूप में myfunction की पूर्ण घोषणा;


  • की पूर्ण घोषणा > Myfunction के रूप में int myfunction ();

    यह हल करने के लिए पर्याप्त आसान है, और आपके संकलक को जोर से आप पर जब ऐसा होता है सी की एक विरासत विशेषता के रूप में, जब किसी फ़ंक्शन कॉल का सामना करना पड़ता है, जहां कोई प्रोटोकॉल या परिभाषा से कोई औपचारिक घोषणा नहीं होती है, तो फ़ंक्शन को int वापस करने के लिए माना जाता है और मानकों की एक चर संख्या को स्वीकार करता है। इसलिए मुख्य () में आपकी कॉल को ऐसा फ़ंक्शन माना जाता है जो इस तरह दिखता है:

      int myfunction ();  

    बाद में जब वास्तविक myfunction का सामना करना पड़ता है, तो कम से कम आपके कंपाइलर को चेतावनी के साथ आप पर चिल्लाएंगे कि कैसे घोषणा करता है कि ' T अपेक्षित प्रकार से मेल खाती है (क्योंकि इस समय यह सोचता है कि यह int myfunction () है)। फिर भी, हालांकि, कॉल अभी भी जारी रहती है, लेकिन इस पर भरोसा करने के लिए यह भयानक अभ्यास है। उपयोग करने से पहले अपने कार्यों का उचित रूप से प्रोटोटाइप करें।


    अपने सभी पॉइंटर्स के लिए गलत डेटा प्रकार।

    आपके फ़ंक्शन में स्ट्रिंग शब्दशः स्थानीय सरणी स्थान यह केवल पढ़ने के लिए डेटा बफर है जो आपके प्रोग्राम के डेटा ब्लॉक में किसी पठन-केवल सेगमेंट में बैठे हैं। सही घोषणा यह है:

    <पूर्व> const char * test = "mytest";

    लेकिन उसमें इस कोड के बाकी हिस्सों में परिवर्तन की आवश्यकता के लहर प्रभाव है, जो आपको एक क्षण में दिखाई देगा।


    नहीं मुख्य ()

    के लिए प्रदान किए गए वापसी मान मुख्य () के आपके निष्कर्ष पर निश्चित हो। जाहिर है C99 आपको इसे छोड़ने की अनुमति देता है और कार्यान्वयन माना जाता है आपके लिए 0 लौटाता है। उन्हें खुशी न दे; इसे अपने आप को पकड़ लें।


    उपरोक्त सभी को संबोधित कर रहा है ...

      #include & lt; stdio.h & gt; शून्य myfunction (const char ** in); Int main () {const char * परिणाम = शून्य; myfunction (& amp; परिणाम); Printf ("मुख्य में (% p:% s \ n", परिणाम, परिणाम); वापसी 0; } शून्य myfunction (const char ** in) {const char * test = "mytest"; Printf ("myfunction () में% p:% s \ n", परीक्षण, परीक्षण); * में = परीक्षा; }  

    आउटपुट (कार्यान्वयन के अनुसार बदलता है)

      में मुख्य () 0x8048580: myfenction में mytest () 0x8048580: mytest < / कोड> 


  • Comments

    Popular posts from this blog

    ios - How do I use CFArrayRef in Swift? -

    eclipse plugin - Run java code error: Workspace is closed -

    c - Error on building source code in VC 6 -