कमांड-लाइन तर्क
जब वे निष्पादित होते हैं, तो कमांड लाइन से आपके उद्देश्य-सी कार्यक्रमों तक कुछ मानों को पारित करना संभव है। ये मान कहलाते हैंcommand line arguments और कई बार वे आपके कार्यक्रम के लिए महत्वपूर्ण होते हैं, खासकर जब आप कोड के अंदर उन मूल्यों को कोडित करने के बजाय बाहर से अपने कार्यक्रम को नियंत्रित करना चाहते हैं।
कमांड लाइन तर्कों को मुख्य () फ़ंक्शन तर्कों का उपयोग करके नियंत्रित किया जाता है जहां argc संदर्भित तर्कों की संख्या को संदर्भित करता है, और argv[]एक पॉइंटर ऐरे है, जो प्रोग्राम को दिए गए प्रत्येक तर्क की ओर इशारा करता है। निम्नलिखित एक सरल उदाहरण है, जो यह जांचता है कि क्या कमांड लाइन से आपूर्ति की गई कोई तर्क है और तदनुसार कार्रवाई करें -
#import <Foundation/Foundation.h>
int main( int argc, char *argv[] ) {
if( argc == 2 ) {
NSLog(@"The argument supplied is %s\n", argv[1]);
} else if( argc > 2 ) {
NSLog(@"Too many arguments supplied.\n");
} else {
NSLog(@"One argument expected.\n");
}
}
जब उपरोक्त कोड को एक ही तर्क के साथ संकलित और निष्पादित किया जाता है, तो "परीक्षण" कहते हैं, यह निम्नलिखित परिणाम उत्पन्न करता है।
2013-09-13 03:01:17.333 demo[7640] The argument supplied is testing
जब उपरोक्त कोड दो तर्कों के साथ संकलित और निष्पादित किया जाता है, तो परीक्षण 1 और परीक्षण 2 कहते हैं, यह निम्नलिखित परिणाम उत्पन्न करता है।
2013-09-13 03:01:18.333 demo[7640] Too many arguments supplied.
जब उपरोक्त कोड किसी भी तर्क को पारित किए बिना संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है।
2013-09-13 03:01:18.333 demo[7640] One argument expected
इस बात पर ध्यान दिया जाना चाहिए कि argv[0] कार्यक्रम का नाम स्वयं रखता है और argv[1]आपूर्ति की गई पहली कमांड-लाइन तर्क के लिए एक संकेतक है, और * argv [n] अंतिम तर्क है। यदि कोई तर्क नहीं दिया जाता है, तो argc एक होगा, अन्यथा यदि आप एक तर्क पास करते हैं, तोargc 2 पर सेट है।
आप सभी कमांड लाइन तर्कों को एक स्थान से अलग कर देते हैं, लेकिन यदि तर्क में एक स्थान होता है, तो आप ऐसे तर्क को दोहरे उद्धरण चिह्नों "या एकल उद्धरणों" के अंदर रखकर पारित कर सकते हैं। हम एक बार फिर उदाहरण के ऊपर फिर से लिखते हैं जहां हम प्रोग्राम का नाम प्रिंट करेंगे और हम दोहरे उद्धरण चिह्नों को डालकर एक कमांड-लाइन तर्क भी पास करेंगे -
#import <Foundation/Foundation.h>
int main( int argc, char *argv[] ) {
NSLog(@"Program name %s\n", argv[0]);
if( argc == 2 ) {
NSLog(@"The argument supplied is %s\n", argv[1]);
} else if( argc > 2 ) {
NSLog(@"Too many arguments supplied.\n");
} else {
NSLog(@"One argument expected.\n");
}
return 0;
}
जब उपरोक्त कोड संकलित किया जाता है और अंतरिक्ष द्वारा अलग किए गए एकल तर्क के साथ निष्पादित होता है, लेकिन अंदर दोहरे उद्धरण "परीक्षण 1 परीक्षण 2" कहते हैं, तो यह निम्नलिखित परिणाम उत्पन्न करता है।
2017-11-30 06:36:59.081 main[71010] Program name main
2017-11-30 06:36:59.082 main[71010] One argument expected.