जब C प्रोग्राम्स निष्पादित होते हैं तो कमांड लाइन से कुछ मान पास करना संभव है। इन मानों को कमांड लाइन आर्गुमेंट्स कहा जाता है और कई बार वे आपके प्रोग्राम के लिए महत्वपूर्ण होते हैं विशेष रूप से जब आप अपने प्रोग्राम को बाहर से नियंत्रित करना चाहते हैं बजाय उन मानों को कोड के अंदर हार्ड कोड करने के।
कमांड लाइन आर्गुमेंट्स को main() फंक्शन आर्गुमेंट्स का उपयोग करके हैंडल किया जाता है जहां argc पास किए गए आर्गुमेंट्स की संख्या को संदर्भित करता है, और argv[] एक पॉइंटर ऐरे है जो प्रोग्राम को पास किए गए प्रत्येक आर्गुमेंट की ओर इंगित करता है। निम्नलिखित एक सरल उदाहरण है जो जांचता है कि क्या कमांड लाइन से कोई आर्गुमेंट सप्लाई किया गया है और तदनुसार कार्रवाई करता है −
उदाहरण
#include <stdio.h>
int main(int argc, char *argv[]) {
if(argc == 2) {
printf("The argument supplied is %s\n", argv[1]);
} else if(argc > 2) {
printf("Too many arguments supplied.\n");
} else {
printf("One argument expected.\n");
}
}
आउटपुट
$./a.out testing The argument supplied is testing
आउटपुट
$./a.out testing1 testing2 Too many arguments supplied.
आउटपुट
$./a.out One argument expected
यह ध्यान दिया जाना चाहिए कि argv[0] प्रोग्राम का नाम स्वयं रखता है और argv[1] सप्लाई किए गए पहले कमांड लाइन आर्गुमेंट का पॉइंटर है, और *argv[n] अंतिम आर्गुमेंट है। यदि कोई आर्गुमेंट्स सप्लाई नहीं किए जाते हैं, तो argc एक होगा, और यदि आप एक आर्गुमेंट पास करते हैं तो argc 2 पर सेट हो जाता है।
आप सभी कमांड लाइन आर्गुमेंट्स को स्पेस से अलग करके पास करते हैं, लेकिन यदि आर्गुमेंट में स्वयं स्पेस है तो आप ऐसे आर्गुमेंट्स को डबल कोट्स "" या सिंगल कोट्स '' के अंदर रखकर पास कर सकते हैं। आइए उपरोक्त उदाहरण को एक बार फिर से लिखें जहां हम प्रोग्राम नाम प्रिंट करेंगे और हम एक कमांड लाइन आर्गुमेंट भी डबल कोट्स में रखकर पास करेंगे −
उदाहरण
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Program name %s\n", argv[0]);
if(argc == 2) {
printf("The argument supplied is %s\n", argv[1]);
} else if(argc > 2) {
printf("Too many arguments supplied.\n");
} else {
printf("One argument expected.\n");
}
}
आउटपुट
$./a.out "testing1 testing2" Program name ./a.out The argument supplied is testing1 testing2