Argc এবং Argv C++

Argc Ebam Argv C



C++ প্রোগ্রাম লেখার সময়, আমরা সবাই জানি যে 'main()' ফাংশনটি খুবই গুরুত্বপূর্ণ বলে মনে করা হয় কারণ এই ফাংশনটির বাস্তবায়ন অনুপস্থিত থাকলে আমরা আমাদের প্রোগ্রাম কম্পাইল করতে পারি না। C++-এর অন্যান্য ফাংশনের মতোই, “main()” ফাংশনটিও আর্গুমেন্ট গ্রহণ করতে সক্ষম। যাইহোক, 'main()' ফাংশনে আর্গুমেন্ট পাস করার থেকে অন্য ফাংশনে আর্গুমেন্ট পাস করার মধ্যে পার্থক্য হল যে আপনাকে আগের ক্ষেত্রে কমান্ড লাইনের মাধ্যমে আর্গুমেন্ট পাস করতে হবে। এটি তাই কারণ 'প্রধান()' ফাংশন নিজেই ড্রাইভার ফাংশন যা অন্য কোন ফাংশন এটিকে কল করতে এবং আর্গুমেন্ট পাস করতে সক্ষম নয়। এই নিবন্ধে, আমরা উবুন্টু 20.04-এ C++-এ “main()” ফাংশনের দুটি প্যারামিটার, যেমন, “argc” এবং “argv” নিয়ে আলোচনা করব।

উবুন্টু 20.04 এ C++ এ Argc এবং Argv কি?

প্যারামিটার 'argc' আর্গুমেন্ট গণনাকে নির্দেশ করে, যেখানে 'argv' একটি অক্ষর অ্যারেকে বোঝায় যা C++ এ একটি প্রোগ্রাম চালানোর সময় কমান্ড লাইনের মাধ্যমে 'main()' ফাংশনে পাস করা সমস্ত আর্গুমেন্ট ধারণ করে। এখানে, আপনাকে জানতে হবে যে 'argc' সর্বদা আর্গুমেন্টের সংখ্যা '1' হিসাবে পাস করা আর্গুমেন্টের প্রকৃত সংখ্যার চেয়ে বেশি দেখায়। এটি তাই কারণ অবজেক্ট ফাইলের নামটিও একটি কমান্ড-লাইন আর্গুমেন্ট হিসাবে গণনা করা হয়। আপনি যেকোন ডাটা টাইপের কমান্ড লাইন আর্গুমেন্টকে “main()” ফাংশনে পাস করতে পারেন। আপনাকে যা যত্ন নিতে হবে তা হল এই প্যারামিটারগুলি আপনার 'প্রধান()' ফাংশনের প্রোটোটাইপে উল্লেখ করা আছে যদি আপনি সেগুলিকে এটির ভিতরে অ্যাক্সেস করতে চান। যাইহোক, 'main()' ফাংশন এই দুটি প্যারামিটার ছাড়াই পুরোপুরি ভাল কাজ করতে পারে। এই নিবন্ধের নিম্নলিখিত বিভাগে এটি আলোচনা করা হবে, তারপরে আমরা উবুন্টু 20.04-এ C++-এ এই দুটি প্যারামিটারের ব্যবহারে এগিয়ে যাব।

C++ এ Argc এবং Argv ছাড়া প্রধান ফাংশন:

প্রথমত, আমরা আপনাকে বলতে চাই যে C++-এ “main()” ফাংশনটি “argc” এবং “argv” প্যারামিটার ব্যবহার না করেও পুরোপুরি ভাল কাজ করতে পারে। এটি নিম্নলিখিত C++ প্রোগ্রামে চিত্রিত করা হয়েছে:









আমাদের এই প্রোগ্রামে একটি সহজ 'main()' ফাংশন আছে কোন যুক্তি ছাড়াই। এই 'main()' ফাংশনের মধ্যে, আমরা শুধুমাত্র টার্মিনালে একটি নমুনা বার্তা প্রিন্ট করছি।



তারপরে, আমরা নীচে উল্লিখিত কমান্ডের সাহায্যে এই মৌলিক C++ প্রোগ্রামটি কম্পাইল করেছি:





$ g++ CommandLine.cpp –o CommandLine

পরে, আমরা নিম্নলিখিত কমান্ডটি চালিয়ে এই প্রোগ্রামটি কার্যকর করেছি:



$ . / কমান্ডলাইন

এই সাধারণ C++ প্রোগ্রামের আউটপুট নিচের ছবিতে দেখানো হয়েছে:

কোন কমান্ড লাইন আর্গুমেন্ট পাস না করে একটি C++ প্রোগ্রাম চালানো:

এখন, আমরা একটি C++ প্রোগ্রাম বাস্তবায়ন করার চেষ্টা করব যেখানে 'main()' ফাংশন 'argc' এবং 'argv' প্যারামিটারগুলি গ্রহণ করতে সক্ষম, তবে, এই প্রোগ্রামটি চালানোর সময় আমরা এই আর্গুমেন্টগুলিকে এটিতে পাস করব না টার্মিনাল উল্লেখিত C++ প্রোগ্রামটি নিচের ছবিতে দেখানো হয়েছে:

এই C++ প্রোগ্রামে, আমাদের “main()” ফাংশন “argc” এবং “argv” প্যারামিটার গ্রহণ করতে সক্ষম। যাইহোক, যেহেতু আমরা এই বিশেষ উদাহরণে এই মানগুলিকে এটিতে পাস করার ইচ্ছা করিনি, তাই আমরা ইচ্ছাকৃতভাবে 'argc' কে '0' এর সাথে সমান করেছি যাতে আমরা যখন এটির মান প্রিন্ট করার চেষ্টা করি তখন এটি কোনও আবর্জনা মান ফিরিয়ে না দেয়। এর পরে, আমরা টার্মিনালে 'argc' প্যারামিটারের মান প্রিন্ট করেছি। তারপর, আমরা টার্মিনালে সমস্ত কমান্ড লাইন আর্গুমেন্ট প্রিন্ট করার জন্য একটি 'for' লুপ ব্যবহার করেছি।

নীচে দেখানো কমান্ড ব্যবহার করে আমরা এই কোডটি কম্পাইল করেছি:

$ g++ CommandLine.cpp –o CommandLine

তারপরে, যখন আমরা এই প্রোগ্রামটি চালাতে চেয়েছিলাম, তখন আমরা এতে কোন কমান্ড-লাইন আর্গুমেন্ট পাস করিনি, আপনি নিম্নলিখিত কমান্ড থেকে দেখতে পাচ্ছেন:

$ . / কমান্ডলাইন

নীচের ছবিতে দেখানো এই C++ প্রোগ্রামের আউটপুট থেকে, আপনি দেখতে পাচ্ছেন যে এই ফাংশনে কোনো কমান্ড-লাইন আর্গুমেন্ট পাস করা হয়নি যার কারণে আর্গুমেন্টের সংখ্যা ছিল '0' এবং টার্মিনালে কোনো আর্গুমেন্ট প্রিন্ট করা হয়নি কারণ ক্যারেক্টার অ্যারে ' argv”ও খালি ছিল।

ইন্টিজার টাইপ কমান্ড লাইন আর্গুমেন্ট সহ একটি C++ প্রোগ্রাম চালানো:

এখন, আমরা পূর্ণসংখ্যা টাইপ কমান্ড-লাইন আর্গুমেন্ট পাস করে একই C++ প্রোগ্রাম চালাতে চাই। যাইহোক, এটি করার আগে, আমরা নীচের ছবিতে দেখানো আমাদের কোডটি সামান্য পরিবর্তন করব:

আমরা এই কোডে শুধুমাত্র পরিবর্তন করেছি যে আমরা এটি থেকে 'argc=0' লাইনটি সরিয়ে দিয়েছি কারণ এই উদাহরণে, আমরা রান টাইমে এই প্রোগ্রামে পাস করা কমান্ড লাইন আর্গুমেন্টের প্রকৃত সংখ্যা প্রিন্ট করতে চাই। বাকি কোড ঠিক উপরের বিভাগে ব্যবহৃত হিসাবে একই.

আমরা নীচে দেখানো কমান্ড ব্যবহার করে আমাদের পরিবর্তিত কোড পুনরায় কম্পাইল করেছি:

$ g++ CommandLine.cpp –o CommandLine

তারপর, এই কোডটি কার্যকর করার জন্য, আমরা নিম্নলিখিত কমান্ড-লাইন আর্গুমেন্টগুলি ব্যবহার করেছি:

$ . / কমান্ডলাইন 1 দুই 3

এর মানে হল যে আমরা এই C++ প্রোগ্রামটি চালানোর সময় তিনটি পূর্ণসংখ্যা ধরনের কমান্ড-লাইন আর্গুমেন্ট পাস করেছি, যেমন 1, 2, এবং 3।

এই পরিবর্তিত প্রোগ্রামের আউটপুট নীচের ছবিতে দেখানো হয়েছে:

এই C++ প্রোগ্রাম দ্বারা ফেরত দেওয়া মোট আর্গুমেন্টের সংখ্যা হল “4” অর্থাৎ তিনটি পূর্ণসংখ্যা আর্গুমেন্ট যা আমরা পাস করেছি + অবজেক্ট ফাইলের নাম। এই প্রোগ্রামটি টার্মিনালে 'argv' ক্যারেক্টার অ্যারের উপাদানগুলিও প্রিন্ট করেছে, অর্থাৎ, প্রোগ্রামের নামের সাথে, কার্যকর করার সময় এই প্রোগ্রামে পাস করা প্রকৃত পূর্ণসংখ্যা ধরনের আর্গুমেন্ট।

ক্যারেক্টার টাইপ কমান্ড লাইন আর্গুমেন্ট সহ একটি C++ প্রোগ্রাম চালানো:

এখন, আমরা দেখতে চাই যে একই C++ প্রোগ্রাম ঠিক কাজ করে কিনা যখন আমরা এটিকে ক্যারেক্টার টাইপ কমান্ড-লাইন আর্গুমেন্ট দিয়ে এক্সিকিউট করার চেষ্টা করি। এর জন্য, আমাদের এটিকে আর সংশোধন করার দরকার নেই। আমাদের কেবলমাত্র অক্ষর টাইপ কমান্ড-লাইন আর্গুমেন্টের সাথে এটি কার্যকর করতে হয়েছিল:

$ . / কমান্ডলাইন a b c d e f

এর মানে হল যে আমরা এই C++ প্রোগ্রামটি চালানোর সময় ছয়-অক্ষরের ধরনের কমান্ড-লাইন আর্গুমেন্ট পাস করেছি, যেমন, a, b, c, d, e, এবং f।

একই C++ প্রোগ্রামে ক্যারেক্টার টাইপ কমান্ড-লাইন আর্গুমেন্ট পাস করার ফলে উত্পাদিত আউটপুট নীচে দেখানো হয়েছে:

এই C++ প্রোগ্রাম দ্বারা প্রত্যাবর্তিত আর্গুমেন্টের মোট সংখ্যা হল “7” অর্থাৎ, ছয়-অক্ষরের আর্গুমেন্ট যা আমরা পাস করেছি + অবজেক্ট ফাইলের নাম। এই প্রোগ্রামটি টার্মিনালে 'argv' ক্যারেক্টার অ্যারের উপাদানগুলিও প্রিন্ট করেছে, অর্থাৎ, প্রোগ্রামের নামের সাথে এই প্রোগ্রামে এক্সিকিউশনের সময় পাস করা আসল ক্যারেক্টার টাইপ আর্গুমেন্ট।

উপসংহার:

এই নিবন্ধটি দুটি কমান্ড-লাইন আর্গুমেন্টের আলোচনার লক্ষ্যে ছিল, যা “main()” ফাংশনের পরামিতি হিসাবেও পরিচিত, যেমন, “argc” এবং “argv”। আমরা তাদের ব্যবহার উল্লেখ করে এই দুটি প্যারামিটারের তাৎপর্য সম্পর্কে কথা বলেছি। তারপর, আমরা আপনার সাথে কয়েকটি উদাহরণ শেয়ার করেছি যেগুলি উবুন্টু 20.04-এ C++-এ “argc” এবং “argv”-এর ব্যবহার চিত্রিত করেছে। তদুপরি, আমরা আরও স্পষ্ট করেছি যে এই প্যারামিটারগুলি ব্যবহার না করেও, 'main()' ফাংশনটি পুরোপুরি ভালভাবে কাজ করতে পারে। অতএব, একবার আপনি এই নিবন্ধটি পড়লে, আপনি C++ এ “argc” এবং “argv”-এর ব্যবহার খুব স্পষ্টভাবে বুঝতে পারবেন।