2013-07-15 13 views
10

मुझे पता है कि प्रोग्राम लिखने के बाद से कमांड लाइन तर्क स्वीकार करता है। मुझे समझ में नहीं आता कि ये पैरामीटर उनके मूल्य कैसे प्राप्त करते हैं। उम्मीद है कि मेरे पास इन दो मिश्रित नहीं हैं लेकिन एक तर्क और पैरामीटर के बीच एक अंतर है। एक तर्क फ़ंक्शन को दिया गया मान है जब इसे कहा जाता है: foo (a, b, c); जहां ए, बी, और सी मूल्य हैं। एक पैरामीटर वह मान है जो फ़ंक्शन के अंदर हैं जबकि कॉल किया जा रहा है।सी प्रोग्राम के लिए कमांड लाइन तर्क कैसे पास करें

तो मेरा सवाल यह है कि किसी व्यक्ति को कमांड लाइन तर्क किसी प्रोग्राम में कैसे पास करता है? मैं समझता हूं कि तर्कों को कैसे पढ़ा जाए, argc तर्कों की संख्या है, argv तर्कों आदि की तारों की एक सरणी के लिए एक सूचक है, लेकिन मुझे नहीं पता कि उन तर्कों को एक मूल्य कैसे देना है ..

मैं सी और सी ++ दोनों के लिए जानकारी की तलाश में हूं। मैं इस पर एक नौसिखिया हूँ।

+2

यह एक विशिष्ट सिस्टम ऑपरेटिंग सिस्टम होगा, हालांकि यूनिक्स-स्टाइल सिस्टम पर आप फ़ंक्शन के exec() परिवार के लिए मैन पेज देख सकते हैं - यही वह कमांड शैल सामान्य रूप से उन तर्कों के साथ उपयोग करता है जिन्हें उन्होंने पार्स किया है कमांड लाइन से बाहर। –

+0

"मैंने कभी भी इस कार्यक्षमता का उपयोग नहीं किया है क्योंकि मुझे नहीं पता कि प्रोग्राम में ऐसे तर्क कैसे पारित करें" - दो वाक्यों पहले: "मुझे पता है कि प्रोग्राम को सीखने के बाद से कमांड लाइन तर्क स्वीकार करने वाले प्रोग्राम को कैसे लिखना है "- अब ** सच क्या है? ** इसके अलावा, ऐसा प्रतीत नहीं होता है कि आप शुरुआती सी ++ ट्यूटोरियल के अध्याय 1 के माध्यम से चले गए हैं, यह वहां बहुत जल्दी वर्णन किया गया होगा। –

+0

यह सच है। मुझे नहीं लगता कि यह बहुत स्पष्ट हो गया है। मैं जानना चाहता हूं कि किसी प्रोग्राम को तर्क कैसे पारित करना है, पैरामीटर नहीं! मैं जानना चाहता हूं कि प्रोग्राम को मूल्यों को पैरामीटर के रूप में उपयोग करने के लिए तर्क के रूप में कैसे दिया जाता है! दूसरे शब्दों में उपयोगकर्ता प्रोग्राम को इसके तर्क कैसे देता है? जैसा कि यू हाओ, टीजीएच, और नोबिलिस के पास था जो मैं ढूंढ रहा था। – Braineeee

उत्तर

11

एक Windows वातावरण में आप सिर्फ इसलिए की तरह कमांड लाइन पर उन्हें पारित:

myProgram.exe arg1 arg2 arg3 

argv [1] को शामिल ARG1 आदि

मुख्य कार्य होगा निम्नलिखित:

int main (int argc, char *argv[]) 
+1

इसमें जोड़ने के लिए, आपकी 'मुख्य' फ़ंक्शन घोषणा 'int main (int argc, char * argv [])' होगी, और आपको 'argv [1] ',' argv [2]' और ' शीघ्र। – vee

+0

सहमत हुए। मैंने – TGH

2

* निक्स पर, बहुत अच्छा utility है जो आपको कमांड लाइन झंडे और तर्कों को एक बहुत ही सरल तरीके से पार्स करने देता है। उसी पृष्ठ पर इसके उपयोग का एक अच्छा उदाहरण है।

तब आप अपने कार्यक्रम चलाने के लिए और एक बहुत ही मानकीकृत तरीके से करने के लिए तर्क पारित होगा:

$ ./my_app -a -b -c argument1 argument2

आप इसे बिना कर सकते हैं और सिर्फ अपने दम पर उन्हें पार्स लेकिन आप बनाने के लिए लक्ष्य कर रहे हैं, तो आपका ऐप अन्य लोगों के लिए उपयोगी है, यह निश्चित रूप से इसे अनुरूप बनाने के प्रयास के लायक है।

8

* nix पर:

$ ./my_prog arg1 arg2 

विंडोज कमांड लाइन पर:

C:\>my_prog.exe arg1 arg2 

दोनों मामलों में, main दी घोषित किया जाता है के रूप में:

int main (int argc, char *argv[]) 

argc एक int हो जाएगा 3, argv[1] = "arg1",के मूल्य के साथ, इसके अतिरिक्त, argv[0] प्रोग्राम का नाम होगा, my_prog

कमांड लाइन तर्क सामान्य रूप से अंतरिक्ष से अलग होते हैं, यदि आप hello world की तरह, एक अंतरिक्ष के साथ एक बहस पारित करने के लिए चाहते हैं, एक दोहरे उद्धरण का उपयोग करें:

$ ./my_prog "hello world" 
2

बस खोज इंडेक्स में प्रारंभ मेनू और प्रकार cmd पर क्लिक करें ... प्रविष्ट करें दबाएं .. अब cmd विंडो प्रकार में निम्न आदेश ... "program_name arg1 arg2" (उद्धरण के बिना) और एंटर कुंजी दबाएं ...और हाँ यह हो गया! और

+0

अपडेट किया है कृपया अपने उत्तर में कुछ नई लाइनों को आजमाएं और जोड़ें, यहां पढ़ने के लिए थोड़ा मुश्किल है, आप यह भी ध्यान रखना चाहेंगे कि यह केवल विंडोज़ है। हालांकि +1 सही है जैसा आप सही हैं। – Vality

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