Command Line Arguments
Command line arguments क्या हैं?
आम तौर पर program चलते समय scanf से input लेता है। Command line arguments अलग हैं — आप values program launch करते समय देते हैं, terminal में उसके नाम के ठीक बाद:
./app hello 42
यहाँ hello और 42 program को दिए arguments हैं। इसी तरह gcc file.c जैसे tools file नाम पाते हैं। इन्हें पकड़ने को main दो parameters लेता है।
argc और argv
int main(int argc, char *argv[]) {
// argc = kitne arguments (program naam sahit)
// argv = argument strings ka array
}| नाम | मतलब |
|---|---|
argc | Argument count — कितने, program नाम सहित |
argv[0] | Program का अपना नाम |
argv[1]... | आपकी टाइप की values |
./app hello 42 के लिए, argc 3 है, argv[0] "./app", argv[1] "hello", और argv[2] "42"।
Arguments print करना
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Aapne %d arguments diye.\n", argc - 1);
for (int i = 1; i < argc; i++) // 1 se shuru, program naam chhodein
printf("argv[%d] = %s\n", i, argv[i]);
return 0;
}Output:
Aapne 2 arguments diye.
argv[1] = hello
argv[2] = 42
Loop 1 से शुरू होता है क्योंकि argv[0] बस program का नाम है।
Arguments को numbers बनाना
हर argument एक string है, "42" भी। इसे number के रूप में इस्तेमाल करने को <stdlib.h> के atoi (int में) या atof (double में) से बदलें।
#include <stdlib.h> int n = atoi(argv[1]); // "42" -> 42
एक sum program
Command line पर दिए सभी numbers जोड़ें।
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: ./app num1 num2 ...\n");
return 1;
}
int sum = 0;
for (int i = 1; i < argc; i++)
sum += atoi(argv[i]);
printf("Sum = %d\n", sum);
return 0;
}Output:
Sum = 60
argv[1] छूने से पहले हमेशा पुष्टि करें कि argc काफ़ी बड़ा है, वरना गायब argument array के पार पढ़ लेगा।
आम गलतियाँ
- Loop को
0से शुरू करके गलती से program नाम शामिल करना। - Argument को
atoi/atofसे बदले बिना number के रूप में इस्तेमाल करना। argcजाँचे बिनाargv[1]पढ़ना — गायब होने पर crash।- यह मानना कि arguments validated हैं — user कुछ भी टाइप कर सकता है।
एक program लिखें जो command line पर दो numbers ले और उनका गुणनफल print करे। दो से कम numbers दिए जाने की स्थिति को usage message print करके संभालें।
सारांश
- Command line arguments program launch करते समय दी values हैं।
main(int argc, char *argv[])इन्हें पाता है।argcगिनता है;argv[0]program नाम, असली valuesargv[1]से।- Arguments strings हैं — numbers के लिए
atoiयाatofसे बदलें। - Argument पढ़ने से पहले हमेशा
argcजाँचें।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
C में command line arguments क्या हैं?
./app hello 42। C इन्हें main के दो parameters — argc और argv — के ज़रिए program में भेजता है, ताकि program उन्हें पढ़ और इस्तेमाल कर सके।C में argc और argv क्या हैं?
argc (argument count) एक integer है जो बताता है कि कितने arguments भेजे गए, program नाम सहित। argv (argument vector) strings का array है जो असली arguments रखता है, जहाँ argv[0] program नाम है और argv[1] से आगे वे values जो आपने टाइप कीं।argv[0] में क्या होता है?
argv[0] program को चलाने के लिए इस्तेमाल किया नाम (या path) रखता है। असली user-दिए arguments argv[1] से शुरू होते हैं, इसीलिए arguments process करने वाले loops आमतौर पर index 1 से शुरू होते हैं।Command line argument को number में कैसे बदलते हैं?
<stdlib.h> के functions से बदलते हैं — int के लिए atoi या floating-point के लिए atof। जैसे atoi(argv[1]) पहले argument को integer बनाता है।argv strings का array क्यों है, numbers का नहीं?
42 टाइप करें, वह characters "4" और "2" के रूप में आता है, number 42 नहीं। इसीलिए numbers चाहिए होने पर आपको arguments खुद बदलने पड़ते हैं।