`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