কম্পিউটার টিউটোরিয়াল

C-এ getopt() ফাংশন ব্যবহার করে কমান্ড লাইন আর্গুমেন্ট পার্স করা


`getopt()` হলো একটি বিল্ট-ইন C ফাংশন যা কমান্ড লাইন অপশন (command line options) গ্রহণ করতে ব্যবহৃত হয়। এর সিনট্যাক্স নিচের মত:

getopt(int argc, char *const argv[], const char *optstring)

`optstring` হলো ক্যারেক্টারদের একটি লিস্ট। প্রতিটি ক্যারেক্টার একটি সিঙ্গেল ক্যারেক্টার অপশন রিপ্রেজেন্ট করে।

এই ফাংশন বিভিন্ন মান রিটার্ন করে। নিচে গুরুত্বপূর্ণগুলো দেওয়া হলো:

  • যদি অপশনটি কোনো ভ্যালু নেয়, তবে সেটি `optarg` দ্বারা পয়েন্ট করা হয়।
  • যদি প্রসেস করার জন্য আর কোনো অপশন না থাকে, তবে `-1` রিটার্ন করে।
  • অপরিচিত অপশন (unrecognized option) বোঝাতে `?` রিটার্ন করে, এবং সেটি `optopt`-এ স্টোর হয়।
  • কখনো কখনো কিছু অপশন ভ্যালু এক্সপেক্ট করে। যদি অপশনটি থাকে কিন্তু ভ্যালু না দেয়া থাকে, তবে সেটিও `?` রিটার্ন করে। আমরা `optstring`-এর প্রথম ক্যারেক্টার হিসেবে `:` ব্যবহার করতে পারি, যাতে ভ্যালু না থাকলে `?` এর বদলে `:` রিটার্ন করে।

উদাহরণ

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    int option;
    // স্ট্রিংয়ের শুরুতে ':' রাখা হয় যাতে কম্পাইলার '?' এবং ':' কে আলাদা করতে পারে
    while((option = getopt(argc, argv, ":if:lrx")) != -1) { // getopt() থেকে অপশন নেওয়া
        switch(option){
            // i, r, l অপশনগুলো জন্য প্রিন্ট করা
            case 'i':
            case 'l':
            case 'r':
                printf("Given Option: %c\n", option);
                break;
            case 'f': // f ব্যবহার করা হয় ফাইল নেমের জন্য
                printf("Given File: %s\n", optarg);
                break;
            case ':':
                printf("option needs a value\n");
                break;
            case '?': // অজানা অপশন জন্য
                printf("unknown option: %c\n", optopt);
                break;
        }
    }
    for(; optind < argc; optind++){ // এক্সট্রা আর্গুমেন্ট পাস করা হলে
        printf("Given extra arguments: %s\n", argv[optind]);
    }
}

আউটপুট

Given Option: i
Given File: test_file.c
Given Option: l
Given Option: r
Given extra arguments: hello
  1. জাভাস্ক্রিপ্টে Date.parse() ফাংশন

  2. জাভাস্ক্রিপ্টে প্যারামিটার এবং আর্গুমেন্ট

  3. পাইথনে কমান্ড লাইন আর্গুমেন্ট অ্যাক্সেস করার পদ্ধতি

  4. ব্যাশ স্ক্রিপ্টে কমান্ড-লাইন আর্গুমেন্ট: প্র্যাকটিক্যাল টিউটোরিয়াল