Argc اور Argv C++

Argc Awr Argv C



C++ پروگرام لکھتے وقت، ہم سب جانتے ہیں کہ 'main()' فنکشن کو بہت اہم سمجھا جاتا ہے کیونکہ اگر اس فنکشن کا نفاذ غائب ہو تو ہم اپنا پروگرام مرتب نہیں کر سکتے۔ C++ میں دیگر تمام فنکشنز کی طرح، 'main()' فنکشن بھی دلائل کو قبول کرنے کے قابل ہے۔ تاہم، 'مین()' فنکشن کو آرگیومینٹس پاس کرنے سے دوسرے فنکشنز میں آرگیومینٹس پاس کرنے کے درمیان فرق یہ ہے کہ آپ کو سابق کیس میں کمانڈ لائن کے ذریعے آرگیومینٹس پاس کرنا ہوں گے۔ ایسا اس لیے ہے کہ 'مین()' فنکشن بذات خود ڈرائیور فنکشن ہے جس کی وجہ سے کوئی دوسرا فنکشن اس کو کال کرنے اور اس پر دلائل دینے کے قابل نہیں ہے۔ اس مضمون میں، ہم Ubuntu 20.04 میں C++ میں 'main()' فنکشن کے دو پیرامیٹرز، یعنی 'argc' اور 'argv' پر بات کریں گے۔

Ubuntu 20.04 میں C++ میں Argc اور Argv کیا ہے؟

پیرامیٹر 'argc' سے مراد آرگیومنٹ کاؤنٹ ہے، جب کہ 'argv' سے مراد ایک کریکٹر اری ہے جس میں وہ تمام آرگیومینٹس ہوتے ہیں جو C++ میں کسی پروگرام کو انجام دینے کے وقت کمانڈ لائن کے ذریعے 'main()' فنکشن کو بھیجے جاتے ہیں۔ یہاں، آپ کو یہ جاننے کی ضرورت ہے کہ 'argc' ہمیشہ دلیل کی گنتی کو '1' کے طور پر منظور شدہ دلائل کی اصل تعداد سے زیادہ دکھاتا ہے۔ ایسا اس لیے ہے کہ آبجیکٹ فائل کا نام بھی کمانڈ لائن آرگومنٹ کے طور پر شمار کیا جاتا ہے۔ آپ کسی بھی ڈیٹا ٹائپ سے تعلق رکھنے والے کمانڈ لائن آرگیومینٹس کو 'main()' فنکشن میں منتقل کر سکتے ہیں۔ آپ کو صرف اتنا خیال رکھنے کی ضرورت ہے کہ اگر آپ ان تک رسائی حاصل کرنا چاہتے ہیں تو آپ کے 'مین()' فنکشن کے پروٹو ٹائپ میں ان پیرامیٹرز کا ذکر ہے۔ تاہم، 'main()' فنکشن ان دو پیرامیٹرز کے بغیر بالکل ٹھیک کام کر سکتا ہے۔ اس مضمون کے مندرجہ ذیل حصے میں اس پر تبادلہ خیال کیا جائے گا، جس کے بعد ہم Ubuntu 20.04 میں C++ میں ان دو پیرامیٹرز کے استعمال پر جائیں گے۔

C++ میں Argc اور Argv کے بغیر مین فنکشن:

سب سے پہلے، ہم آپ کو بتانا چاہیں گے کہ C++ میں 'main()' فنکشن 'argc' اور 'argv' کے پیرامیٹرز استعمال کیے بغیر بھی بالکل ٹھیک کام کر سکتا ہے۔ اسے درج ذیل C++ پروگرام میں دکھایا گیا ہے۔









ہمارے پاس اس پروگرام میں بغیر کسی دلیل کے ایک سادہ 'مین()' فنکشن ہے۔ اس 'main()' فنکشن کے اندر، ہم ٹرمینل پر صرف ایک نمونہ پیغام پرنٹ کر رہے ہیں۔



پھر، ہم نے ذیل میں دی گئی کمانڈ کی مدد سے اس بنیادی C++ پروگرام کو مرتب کیا:





$ g++ CommandLine.cpp -o کمانڈ لائن

اس کے بعد، ہم نے مندرجہ ذیل کمانڈ کو چلا کر اس پروگرام کو انجام دیا:



$ . / کمانڈ لائن

اس سادہ C++ پروگرام کا آؤٹ پٹ نیچے دی گئی تصویر میں دکھایا گیا ہے۔

بغیر کسی کمانڈ لائن دلائل کو پاس کیے C++ پروگرام چلانا:

اب، ہم ایک C++ پروگرام کو لاگو کرنے کی کوشش کریں گے جس میں 'main()' فنکشن 'argc' اور 'argv' کے پیرامیٹرز کو قبول کرنے کے قابل ہو، تاہم، ہم اس پروگرام کو انجام دیتے وقت ان دلائل کو اس تک نہیں پہنچائیں گے۔ ٹرمینل مذکورہ C++ پروگرام درج ذیل تصویر میں دکھایا گیا ہے۔

اس C++ پروگرام میں، ہمارا 'main()' فنکشن 'argc' اور 'argv' پیرامیٹرز کو قبول کرنے کے قابل ہے۔ تاہم، چونکہ ہم نے اس خاص مثال میں ان اقدار کو اس تک پہنچانے کا ارادہ نہیں کیا تھا، اس لیے ہم نے جان بوجھ کر 'argc' کو '0' سے برابر کر دیا ہے تاکہ جب ہم اس کی قدر کو پرنٹ کرنے کی کوشش کریں، تو یہ کوئی ردی کی قیمت واپس نہ کرے۔ اس کے بعد، ہم نے ٹرمینل پر 'argc' پیرامیٹر کی قدر پرنٹ کی ہے۔ اس کے بعد، ہم نے ٹرمینل پر تمام کمانڈ لائن آرگیومینٹس پرنٹ کرنے کے لیے 'for' لوپ استعمال کیا ہے۔

ہم نے ذیل میں دکھائے گئے کمانڈ کا استعمال کرتے ہوئے اس کوڈ کو مرتب کیا ہے۔

$ g++ CommandLine.cpp -o کمانڈ لائن

پھر، جب ہم نے اس پروگرام کو چلانا چاہا، تو ہم نے اس پر کوئی کمانڈ لائن آرگیومنٹ نہیں دیا، جیسا کہ آپ درج ذیل کمانڈ سے دیکھ سکتے ہیں:

$ . / کمانڈ لائن

نیچے دی گئی تصویر میں دکھائے گئے اس C++ پروگرام کے آؤٹ پٹ سے، آپ دیکھ سکتے ہیں کہ اس فنکشن کو کوئی کمانڈ لائن آرگیومینٹ پاس نہیں کیا گیا تھا جس کی وجہ سے آرگیومینٹ کی گنتی '0' تھی اور ٹرمینل پر کوئی آرگیومنٹ پرنٹ نہیں کیا گیا تھا کیونکہ کریکٹر اری ' argv' بھی خالی تھا۔

انٹیجر ٹائپ کمانڈ لائن آرگومنٹس کے ساتھ C++ پروگرام چلانا:

اب، ہم اسی C++ پروگرام کو انٹیجر ٹائپ کمانڈ لائن آرگومنٹس پاس کرکے چلانا چاہتے ہیں۔ تاہم، ایسا کرنے سے پہلے، ہم اپنے کوڈ میں قدرے ترمیم کریں گے جیسا کہ درج ذیل تصویر میں دکھایا گیا ہے۔

اس کوڈ میں صرف ایک ترمیم جو ہم نے کی ہے وہ یہ ہے کہ ہم نے اس سے 'argc=0' لائن کو ہٹا دیا ہے کیونکہ اس مثال میں، ہم رن ٹائم پر اس پروگرام کو بھیجے گئے کمانڈ لائن آرگیومینٹس کی اصل تعداد پرنٹ کرنا چاہتے ہیں۔ باقی کوڈ بالکل ویسا ہی ہے جیسا کہ اوپر والے حصے میں استعمال کیا گیا ہے۔

ہم نے ذیل میں دکھائے گئے کمانڈ کا استعمال کرتے ہوئے اپنے ترمیم شدہ کوڈ کو دوبارہ مرتب کیا:

$ g++ CommandLine.cpp -o کمانڈ لائن

پھر، اس کوڈ پر عمل کرنے کے لیے، ہم نے درج ذیل کمانڈ لائن آرگیومینٹس استعمال کیے:

$ . / کمانڈ لائن 1 دو 3

اس کا مطلب یہ ہے کہ ہم نے اس C++ پروگرام کو چلاتے ہوئے تین عددی قسم کے کمانڈ لائن آرگیومنٹس پاس کیے ہیں، یعنی 1، 2 اور 3۔

اس ترمیم شدہ پروگرام کا آؤٹ پٹ نیچے دی گئی تصویر میں دکھایا گیا ہے۔

اس C++ پروگرام کے ذریعے لوٹائے گئے آرگیومینٹس کی کل تعداد '4' ہے یعنی تین انٹیجر آرگیومینٹس جنہیں ہم پاس کر چکے ہیں + آبجیکٹ فائل کا نام۔ اس پروگرام نے ٹرمینل پر 'argv' کریکٹر اری کے عناصر کو بھی پرنٹ کیا، یعنی اصل عددی قسم کے دلائل جو کہ پروگرام کے نام کے ساتھ اس پروگرام پر عمل درآمد کے وقت پاس کیے گئے تھے۔

کریکٹر ٹائپ کمانڈ لائن آرگومنٹس کے ساتھ C++ پروگرام چلانا:

اب، ہم یہ دیکھنا چاہتے تھے کہ کیا وہی C++ پروگرام ٹھیک کام کرتا ہے جب ہم اس پر کریکٹر ٹائپ کمانڈ لائن آرگیومنٹس دے کر عمل کرنے کی کوشش کرتے ہیں۔ اس کے لیے ہمیں اس میں مزید ترمیم کرنے کی ضرورت نہیں تھی۔ ہمیں اسے صرف کریکٹر ٹائپ کمانڈ لائن دلائل کے ساتھ عمل میں لانا تھا جیسا کہ:

$ . / کمانڈ لائن اے بی سی ڈی ای ایف

اس کا مطلب یہ ہے کہ ہم نے اس C++ پروگرام کو چلاتے ہوئے چھ کریکٹر قسم کی کمانڈ لائن آرگیومینٹس پاس کیے ہیں، یعنی a, b, c, d, e اور f۔

ایک ہی C++ پروگرام میں کریکٹر ٹائپ کمانڈ لائن آرگیومینٹس پاس کرنے کے نتیجے میں پیدا ہونے والا آؤٹ پٹ ذیل میں دکھایا گیا ہے۔

اس C++ پروگرام کے ذریعے لوٹائے گئے آرگیومینٹس کی کل تعداد '7' ہے یعنی چھ کریکٹر آرگیومینٹس جنہیں ہم پاس کر چکے ہیں + آبجیکٹ فائل کا نام۔ اس پروگرام نے ٹرمینل پر 'argv' کریکٹر ارے کے عناصر کو بھی پرنٹ کیا، یعنی اصل کریکٹر قسم کے دلائل جو کہ پروگرام کے نام کے ساتھ اس پروگرام کو ایگزیکیوشن کے وقت پاس کیے گئے تھے۔

نتیجہ:

اس مضمون کا مقصد دو کمانڈ لائن آرگیومینٹس پر بحث کرنا تھا، جنہیں 'مین()' فنکشن کے پیرامیٹرز بھی کہا جاتا ہے، یعنی 'argc' اور 'argv'۔ ہم نے ان دو پیرامیٹرز کی اہمیت کے بارے میں ان کا استعمال بتاتے ہوئے بات کی۔ پھر، ہم نے آپ کے ساتھ چند مثالیں شیئر کیں جن میں Ubuntu 20.04 میں C++ میں 'argc' اور 'argv' کے استعمال کو دکھایا گیا ہے۔ مزید یہ کہ، ہم نے یہ بھی واضح کیا کہ ان پیرامیٹرز کو استعمال کیے بغیر بھی، 'main()' فنکشن بالکل ٹھیک کام کر سکتا ہے۔ لہذا، ایک بار جب آپ اس مضمون کو پڑھ لیں گے، تو آپ C++ میں 'argc' اور 'argv' کے استعمال کو بہت واضح طور پر سمجھ جائیں گے۔