কম্পিউটার

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


getopt() হল অন্তর্নির্মিত C ফাংশনগুলির মধ্যে একটি যা কমান্ড লাইন বিকল্পগুলি নেওয়ার জন্য ব্যবহৃত হয়। এই ফাংশনের সিনট্যাক্স নিচের মত -

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

অপস্ট্রিং অক্ষরের একটি তালিকা। তাদের প্রত্যেকটি একটি একক অক্ষর বিকল্পের প্রতিনিধিত্ব করে।

এই ফাংশন অনেক মান প্রদান করে। এগুলো নিচের মত -

  • যদি বিকল্পটি একটি মান নেয়, তাহলে সেই মানটি optarg দ্বারা নির্দেশিত হবে।
  • এটি ফিরে আসবে -1, যখন প্রক্রিয়া করার আর কোনো বিকল্প থাকবে না
  • এটি একটি অচেনা বিকল্প দেখানোর জন্য '?' ফেরত দেয়, এটি অপ্টপটে সংরক্ষণ করে।
  • কখনও কখনও কিছু বিকল্পের কিছু মান প্রয়োজন, যদি বিকল্পটি উপস্থিত থাকে কিন্তু মানগুলি সেখানে না থাকে, তবে এটিও '?' ফেরত দেবে। আমরা optstring-এর প্রথম অক্ষর হিসাবে ':' ব্যবহার করতে পারি, তাই সেই সময়ে, এটি '?'-এর পরিবর্তে ':' ফিরে আসবে যদি কোনো মান দেওয়া না হয়।

উদাহরণ

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

main(int argc, char *argv[]) {
   int option;
   // put ':' at the starting of the string so compiler can distinguish between '?' and ':'
   while((option = getopt(argc, argv, ":if:lrx")) != -1){ //get option from the getopt() method
      switch(option){
         //For option i, r, l, print that these are options
         case 'i':
         case 'l':
         case 'r':
            printf("Given Option: %c\n", option);
            break;
         case 'f': //here f is used for some file name
            printf("Given File: %s\n", optarg);
            break;
         case ':':
            printf("option needs a value\n");
            break;
         case '?': //used for some unknown options
            printf("unknown option: %c\n", optopt);
            break;
      }
   }
   for(; optind < argc; optind++){ //when some extra arguments are passed
      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. শেল/ব্যাশ স্ক্রিপ্টে কমান্ড লাইন আর্গুমেন্ট [টিউটোরিয়াল]