तर्क argc
और main
की argv
एक कार्यक्रम के लिए तर्क भेजने के लिए एक मार्ग के रूप में प्रयोग किया जाता है, संभवतः सबसे परिचित तरीका अच्छा ol 'टर्मिनल जहां एक उपयोगकर्ता टाइप कर सकते हैं cat file
उपयोग करने के लिए है। यहां cat
शब्द एक प्रोग्राम है जो फ़ाइल लेता है और मानक आउटपुट (stdout
) पर आउटपुट करता है।
कार्यक्रम, argc
में तर्क की संख्या और argv
में बहस के वेक्टर प्राप्त करता है ऊपर आर्ग ument ग ount में दो (पहला तर्क के रूप में कार्यक्रम का नाम गिना जाता है) और आर्ग होगा ument v ईक्टर में [cat
, file
, शून्य] शामिल होगा। जबकि अंतिम तत्व शून्य-सूचक है।
सामान्य रूप से, आप इसे इस प्रकार लिखते थे:
int main() {
// code
return 0; // Zero indicates success, while any
// Non-Zero value indicates a failure/error
}
:
int // Specifies that type of variable the function returns.
// main() must return an integer
main (int argc, char **argv) {
// code
return 0; // Indicates that everything went well.
}
अपने कार्यक्रम किसी भी तर्क की आवश्यकता नहीं है तो वह निम्नलिखित फैशन में एक main
समारोह लिखने के लिए समान रूप से मान्य है
सी भाषा के शुरुआती संस्करणों में, main
से पहले कोई संकेत नहीं था। आज, यह एक त्रुटि माना जाता है।
POSIX -compliant सिस्टम (और Windows) पर, वहाँ संभावना एक तिहाई पैरामीटर char **envp
जो प्रोग्राम environment variables का एक वेक्टर शामिल उपयोग करने के लिए मौजूद है। main
फ़ंक्शन की तर्क सूची के आगे भिन्नताएं मौजूद हैं, लेकिन मैं इसे यहां विस्तार से नहीं बताऊंगा क्योंकि यह गैर-मानक है।
इसके अलावा, चर के नामकरण सम्मेलन है और इसका कोई वास्तविक अर्थ नहीं है। यह हमेशा एक अच्छा विचार इस का पालन करने के लिए इतना है कि आप अन्य लोगों को भ्रमित नहीं करना है, लेकिन यह भी उतना ही main
int main(int c, char **v, char **e) {
// code
return 0;
}
के रूप में और अपने दूसरे प्रश्न के लिए, वहाँ एक करने के लिए तर्क भेजने के लिए कई तरीके हैं परिभाषित करने के लिए वैध होगा कार्यक्रम। मैं तुम्हें exec*()
family of functions जो POSIX -मानक है को देखने के लिए सिफारिश करेंगे, लेकिन यह शायद आसान सिर्फ system
("command arg1 arg2")
उपयोग करने के लिए है, लेकिन system()
का इस्तेमाल आम तौर पर के रूप में यह हर प्रणाली पर काम करने की गारंटी नहीं है सिकोड़ी है। मैंने इसे स्वयं परीक्षण नहीं किया है; लेकिन अगर कोई bash
, zsh
, या अन्य खोल एक * NIX-सिस्टम पर स्थापित है, system()
असफल हो जायेगी।
ध्यान दें कि यदि आप आदेश पंक्ति तर्क उपयोग करने का इरादा नहीं है, यह पूरी तरह अनुमेय (और बहुत समझदार) है समारोह 'पूर्णांक मुख्य (शून्य)' या 'पूर्णांक मुख्य()' परिभाषित करने के लिए। सी 99 या सी 11 में रिटर्न टाइप ('int') अनिवार्य है; कंपाइलर्स कभी-कभी आपको इसे छोड़ देते हैं यदि आप निर्दिष्ट नहीं करते हैं कि आपके कोड का सी मानक का कौन सा संस्करण पालन करता है। यह भी देखें [सी और सी ++ में 'मुख्य()' वापसी क्या होनी चाहिए (http://stackoverflow.com/questions/204476/)। –