Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C भाषा में main() फंक्शन में आर्गुमेंट्स देना


कमांड लाइन आर्गुमेंट्स

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 → फाइल सूची)प्रोग्राम की जिम्मेदारी
उद्धरणशेल संभालता हैशेल + रनटाइम लाइब्रेरी
  1. C प्रोग्राम में आयत में अंकित सबसे बड़े संभव समचतुर्भुज का क्षेत्रफल C प्रोग्राम में आयत में अंकित सबसे बड़े संभव समचतुर्भुज का क्षेत्रफल

    समस्या विवरण यहां हम एक समस्या देखेंगे, जहां एक आयत दिया गया है। हमें आयत में अंकित किए जा सकने वाले सबसे बड़े समचतुर्भुज का क्षेत्रफल ढूंढना है। सूत्र आयत की लंबाई l और चौड़ाई b है। तो समचतुर्भुज का क्षेत्रफल = (l * b) / 2 C++ प्रोग्राम उदाहरण #include <iostream> #include <cmath> usi

  1. - C भाषा में isupper() फंक्शन

    isupper() फंक्शन का उपयोग यह जांचने के लिए किया जाता है कि कैरेक्टर अपरकेस है या नहीं। यह सफल होने पर नॉन-ज़ीरो मान लौटाता है, अन्यथा शून्य लौटाता है। यह ctype.h हेडर फाइल में घोषित है। C भाषा में isupper() का सिंटैक्स यहाँ है, int isupper(int character); यहाँ, character - वह कैरेक्टर जिसे जांचा जान

  1. - C# प्रोग्राम के मुख्य भाग (Main Parts of a C# Program)

    C# प्रोग्राम के मुख्य भाग प्रत्येक C# प्रोग्राम की एक मानक संरचना होती है। यहां 7 मुख्य भाग हैं: नेमस्पेस डिक्लेरेशन (Namespace Declaration) - संबंधित क्लासेस को ग्रुप करता है। क्लास (Class) - डेटा और व्यवहार का ब्लूप्रिंट। क्लास एट्रिब्यूट्स/फील्ड्स (Class Attributes/Fields) - डेटा मेंबर्स। क्लास