সি প্রোগ্রাম এক্সিকিউট করার সময় কমান্ড লাইন থেকে কিছু মান পাস করা সম্ভব। এই মানগুলাকে কমান্ড লাইন আর্গুমেন্টস বলা হয় এবং बहুসময় এগুলো খুব গুরুত্বপূর্ণ হয় প্রোগ্রামের জন্য, বিশেষ করে যখন আপনি আপনার প্রোগ্রামকে বাহ্যিকভাবে কন্ট্রোল করতে চান হার্ড কোডিং করার বদলে।
কমান্ড লাইন আর্গুমেন্টগুলো main() ফাংশনের আর্গুমেন্টের মাধ্যমে হ্যান্ডল করা হয় যেখানে 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 হবে ১, এবং একটি আর্গুমেন্ট পাস করলে 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" Program name ./a.out The argument supplied is testing1 testing2