2015-06-26 8 views
5

मैं एसटीडीआईएन से इनपुट लेने की कोशिश कर रहा हूं। यदि इनपुट स्ट्रिंग '$' के साथ शुरू होती है तो इनपुट स्ट्रिंग में कनवर्ट नहीं किया जाता है।

int main(int argc, char*argv[]){ 
    printf("%s\n",argv[1]); 
} 

कोई मुझे क्यों सी संकलक के साथ पात्रों की जगह करने के लिए हमें बताएं कर सकते हैं '0' अगर यह '$' प्रतीक का सामना करना पड़ता?

+5

मेरा अनुमान है कि है कि आप एक यूनिक्स की तरह खोल से कार्यक्रम को कॉल कर रहे हैं, और खोल एक चर नाम के रूप में '$ foo' interpretting है, और कुछ भी नहीं के साथ प्रतिस्थापन (क्योंकि चर' foo' अस्तित्व में नहीं है)। इसके बजाय ''$ foo'' (सिंगल कोट्स के साथ) का उपयोग करने का प्रयास करें। – godlygeek

+2

इसके अलावा, आप एक स्ट्रिंग को एक कमांड लाइन तर्क के रूप में ले रहे हैं, न कि stdin से - वे बहुत अलग हैं। – godlygeek

उत्तर

10

यह आपका कार्यक्रम नहीं है। यह आपका खोल एक चर के रूप में व्याख्या कर रहा है, फिर अपने कार्यक्रम के लिए अपना मूल्य गुजर रहा है।

इस के आसपास काम करने के लिए, जब आप अपने खोल से प्रोग्राम का आह्वान करते हैं तो $ से बचें।

./yourprogram '$arg' 
+0

या '" \ $ arg "' जो अन्य चरों को विस्तारित करने की अनुमति देगा। –

संबंधित मुद्दे