जब वे निष्पादित होते हैं तो कमांड लाइन से आपके सी प्रोग्राम में कुछ मान पास करना संभव है। इन मानों को कमांड लाइन तर्क कहा जाता है और कई बार वे आपके प्रोग्राम के लिए महत्वपूर्ण होते हैं, खासकर जब आप कोड के अंदर उन मानों को हार्ड कोडिंग करने के बजाय अपने प्रोग्राम को बाहर से नियंत्रित करना चाहते हैं।
कमांड लाइन तर्कों को मुख्य () फ़ंक्शन तर्कों का उपयोग करके नियंत्रित किया जाता है जहां 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" Progranm name ./a.out The argument supplied is testing1 testing2