সি কমান্ড লাইন আর্গুমেন্ট - C Command Line Arguments
সি প্রোগ্রাম সম্পাদনের সময় আপনি কমান্ড লাইন থেকেও ভ্যালু অতিক্রম(pass) করাতে পারেন। এই ভ্যালুকে কমান্ড লাইন আর্গুমেন্ট(command line argument) বলা হয়। অনেক সময়ই ইহা প্রয়োজন হতে পারে, বিশেষকরে আপনি যখন প্রোগ্রামের ভিতরে এই ভ্যালু-সমূহকে হার্ড কোড(hard code) না করে বাহির থেকে কন্ট্রোল করতে চাইবেন।
main(int argc, char *argv[] )
ফাংশন ব্যবহার করে কমান্ড লাইন আর্গুমেন্টকে পরিচালনা করা হয়, যেখানে argc
ফাংশনের মধ্য দিয়ে অতিক্রম হওয়া আর্গুমেন্টের সংখ্যাকে নির্দেশ করে এবং argv[]
হলো পয়েন্টার অ্যারে যা প্রোগ্রামের মধ্য দিয়ে অতিক্রম হওয়া প্রত্যেক আর্গুমেন্টকে নির্দেশ করে।
#include <stdio.h>
int main( int argc, char *argv[] ) {
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]
দ্বারা সরবরাহকৃত প্রথম কমান্ড লাইন আর্গুমেন্টকে নির্দেশ করে এবং *argv[n]
দ্বারা সবশেষ আর্গুমেন্টকে নির্দেশ করে। যদি কোনো আর্গুমেন্ট সরবরাহ করা না হয় তাহলে argc
হবে 1 এবং যদি একটি আর্গুমেন্ট অতিক্রম করানো হয় তাহলে argc
হবে 2।
আর্গুমেন্ট-সমূহকে প্রোগ্রামের মধ্য দিয়ে অতিক্রম করানোর সময় স্পেসের মাধ্যমে পৃথক করা হয়। কিন্তু আর্গুএমেন্টের নিজের-ই যদি স্পেস থাকে তাহলে আর্গুমেন্ট-সমূহকে সিঙ্গেল('') অথবা ডাবল(" ") কোটেশনের মধ্যে রাখা হয়।
চলুন, উপরের প্রোগ্রামটি আমরা পুনরায় লিখি যার মাধ্যমে আমরা প্রোগ্রামের নাম প্রিন্ট করবো এবং কমান্ড লাইন আর্গুমেন্টকে সিঙ্গেল কোটেশনের মধ্যে রেখে অতিক্রম করাবোঃ
#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