কম্পিউটার টিউটোরিয়াল

সি/সি++-তে কমান্ড লাইন আর্গুমেন্টস (Command Line Arguments)


সি প্রোগ্রাম এক্সিকিউট করার সময় কমান্ড লাইন থেকে কিছু মান পাস করা সম্ভব। এই মানগুলাকে কমান্ড লাইন আর্গুমেন্টস বলা হয় এবং बहুসময় এগুলো খুব গুরুত্বপূর্ণ হয় প্রোগ্রামের জন্য, বিশেষ করে যখন আপনি আপনার প্রোগ্রামকে বাহ্যিকভাবে কন্ট্রোল করতে চান হার্ড কোডিং করার বদলে।

কমান্ড লাইন আর্গুমেন্টগুলো 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
  1. AA ট্রি: C/C++-তে ব্যালেন্সড ট্রি ডেটা স্ট্রাকচার

  2. C/C++-তে system() ফাংশন: কম্যান্ড এক্সিকিউশন

  3. C/C++ টোকেন (Tokens) - কীওয়ার্ড, আইডেন্টিফায়ার, কনস্ট্যান্ট, ভেরিয়েবল, অপারেটর

  4. C/C++-তে আর্গুমেন্ট কোয়ার্শন (Argument Coercion)