কমান্ড লাইন থেকে আপনার সি প্রোগ্রামগুলিতে কিছু মান পাস করা সম্ভব যখন সেগুলি চালানো হয়। এই মানগুলিকে কমান্ড লাইন আর্গুমেন্ট বলা হয় এবং অনেক সময় এগুলি আপনার প্রোগ্রামের জন্য গুরুত্বপূর্ণ বিশেষ করে যখন আপনি কোডের ভিতরে সেই মানগুলিকে কঠিন কোড করার পরিবর্তে বাইরে থেকে আপনার প্রোগ্রাম নিয়ন্ত্রণ করতে চান৷
কমান্ড লাইন আর্গুমেন্টগুলি 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 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