कमांड लाइन आर्गुमेंट्स
main() फंक्शन दो पैरामीटर्स स्वीकार कर सकता है जो ऑपरेटिंग सिस्टम द्वारा प्रोग्राम शुरू करते समय पास किए जाते हैं।
सिंटैक्स
int main(int argc, char *argv[]) {
// argc: आर्गुमेंट्स की संख्या (प्रोग्राम नाम सहित)
// argv: आर्गुमेंट स्ट्रिंग्स की सरणी
}
argc(argument count) ≥ 1 हमेशाargv[0]= प्रोग्राम नाम/पथargv[1]...argv[argc-1]= उपयोगकर्ता आर्गुमेंट्सargv[argc]= NULL (C मानक)
उदाहरण प्रोग्राम
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("कुल आर्गुमेंट्स: %d\n", argc);
for (int i = 0; i < argc; i++) {
printf("आर्गुमेंट %d: %s\n", i, argv[i]);
}
return 0;
}
कंपाइल और रन
$ gcc args.c -o args $ ./args hello world 123 कुल आर्गुमेंट्स: 4 आर्गुमेंट 0: ./args आर्गुमेंट 1: hello आर्गुमेंट 2: world आर्गुमेंट 3: 123
व्यावहारिक उपयोग: विकल्प पार्सिंग
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
int verbose = 0;
char *filename = NULL;
for (int i = 1; i < argc; i++) {
if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--verbose") == 0)
verbose = 1;
else if (strcmp(argv[i], "-f") == 0 && i + 1 < argc)
filename = argv[++i];
else if (argv[i][0] == '-')
fprintf(stderr, "अज्ञात विकल्प: %s\n", argv[i]);
else
filename = argv[i];
}
if (!filename) {
fprintf(stderr, "उपयोग: %s [-v] <फाइल>\n", argv[0]);
return 1;
}
if (verbose) printf("फाइल प्रोसेसिंग: %s\n", filename);
// ...
return 0;
}
उन्नत: getopt() (POSIX)
#include <unistd.h>
int main(int argc, char *argv[]) {
int opt;
char *filename = NULL;
int verbose = 0;
while ((opt = getopt(argc, argv, "vf:")) != -1) {
switch (opt) {
case 'v': verbose = 1; break;
case 'f': filename = optarg; break;
default: return 1;
}
}
// optind के बाद non-option आर्गुमेंट्स
}
पर्यावरण चर (Environment Variables)
तीसरा पैरामीटर (GNU एक्सटेंशन):
int main(int argc, char *argv[], char *envp[]) {
for (int i = 0; envp[i]; i++)
printf("%s\n", envp[i]);
return 0;
}
मानक तरीका: getenv("VAR") (stdlib.h)
विंडोज vs यूनिक्स
| पहलू | यूनिक्स/लिनक्स | विंडोज |
|---|---|---|
| argv[0] | प्रोग्राम नाम (./args) | पूर्ण पथ (C:\path\args.exe) |
| वाइल्डकार्ड विस्तार | शेल द्वारा (*.c → फाइल सूची) | प्रोग्राम की जिम्मेदारी |
| उद्धरण | शेल संभालता है | शेल + रनटाइम लाइब्रेरी |