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