C - Command Line Arguments
মোঃ আব্দুল্লাহ
একটি সি প্রোগ্রাম রান করার সময় কমান্ড লাইন থেকে কিছু ভেল্যু বা মান পাস করা সম্ভব । এই ভেল্যু বা মান গুলোকে কমান্ড লাইন আর্গুমেন্ট বলা হয় । অনেক সময় এই কমান্ড লাইন আর্গুমেন্ট অনেক গুরুত্বপূর্ণ এবং প্রয়োজনীয় হয়ে উঠে কারন এই কমান্ড লাইন আর্গুমেন্ট দিয়ে একটি সি প্রোগ্রামকে বাহির থেকে নিয়ন্ত্রণ করা যায় যা কিনা প্রোগ্রামের ভিতরের হার্ড কোডেড ভেল্যু বা মান তুলনায় বেশী কার্যকরী।
কমান্ড লাইন আর্গুমেন্ট এর আর্গুমেন্ট গুলি main( int argc, char *argv[]) ফাংশন এর আর্গুমেন্ট হিসেবে ব্যবহৃত হয়ে থাকে, যেখানে argc উল্লেখ করে কতগুলি আর্গুমেন্ট পাঠানো হয়েছে এবং argv[] হল pointer array যা কিনা যেই আর্গুমেন্ট গুলি পাঠানো হয়েছে তার দিকে point করে থাকে । নিম্নে একটি সহজ উদাহরণ তুলে ধরা হল যার দ্বারা পরীক্ষা করা যাবে যে প্রোগ্রামে কোন আর্গুমেন্ট পাঠানো হয়েছে কিনা এবং যদি পাঠানো হয়ে থাকে তাহলে ঐ অনুযায়ী কাজ করাঃ
#include <stdio.h>
int main( int argc, char *argv[] )
{
printf("Program name %s\n", argv[0]);
if( argc == 2 )
{
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 )
{
printf("Too many arguments supplied.\n");
}
else
{
printf("One argument expected.\n");
}
}
উপরের প্রোগ্রামটি কম্পাইল করে যখন একটি কমান্ড লাইন আর্গুমেন্ট দিয়ে যখন রান করা হবে, তখন নিম্নোক্ত আউটপুট দেখাবেঃ
$./a.out testing
The argument supplied is testing
যখন দুইটি কমান্ড লাইন আর্গুমেন্ট দিয়ে যখন রান করা হবে, তখন নিম্নোক্ত আউটপুট দেখাবেঃ
$./a.out testing1 testing2
Too many arguments supplied.
যখন কোন আর্গুমেন্ট না দিয়ে যখন রান করা হবে, তখন নিম্নোক্ত আউটপুট দেখাবেঃ
$./a.out
One argument expected
এইখানে উল্লেখ্য যে, argv[0] তে যেই প্রোগ্রামটি কম্পাইল করে রান করা হবে তার নাম সংরক্ষিত হয়ে থাকবে এবং argv[1] হল pointer যা কিনা প্রথম আর্গুমেন্টকে point করে থাকবে এবং *argv[n] সর্বশেষ আর্গুমেন্টকে point করে থাকবে । যদি কোন আর্গুমেন্ট না পাঠানো হয় তাহলে argc এর মান হবে ১ এবং যদি একটি আর্গুমেন্ট হয় তাহলে argc এর মান হবে ২ ।
কমান্ড লাইন আর্গুমেন্ট এর প্রত্যেকটি আর্গুমেন্ট একটি স্পেস দিয়ে আলাদা করে পাঠানো হয়ে থাকে অথবা যদি কোন আর্গুমেন্টেই স্পেস থাকে তাহলে ডাবল কোটেশন ("") বা সিংগেল কোটেশন ('') দিয়ে পাঠাতে হয় ।
নিম্নের প্রোগ্রামটির মাধ্যমে আমরা প্রোগ্রামটির নাম এবং স্পেসসহ কোন আর্গুমেন্ট যদি দিতে চাই তা কিভাবে দিবো তা দেখবঃ
#include <stdio.h>
int main( int argc, char *argv[] )
{
printf("Program name %s\n", argv[0]);
if( argc == 2 )
{
printf("The argument supplied is %s\n", argv[1]);
}
else if( argc > 2 )
{
printf("Too many arguments supplied.\n");
}
else
{
printf("One argument expected.\n");
}
}
উপরের প্রোগ্রামটি কম্পাইল করে যখন একটি কমান্ড লাইন আর্গুমেন্ট দিয়ে যখন রান করা হবে, তখন নিম্নোক্ত আউটপুট দেখাবেঃ
$./a.out "testing1 testing2"
Progranm name ./a.out
The argument supplied is testing1 testing2
উল্লেখ যে, এইখানে একটি আর্গুমেন্টই স্পেসসহ পাঠানো হয়েছে ।