Argc و Argv C ++

Argc W Argv C



أثناء كتابة برامج C ++ ، نعلم جميعًا أن الوظيفة 'main ()' تعتبر مهمة جدًا نظرًا لأنه لا يمكننا تجميع برنامجنا إذا كان تنفيذ هذه الوظيفة مفقودًا. تمامًا مثل جميع الوظائف الأخرى في C ++ ، فإن الوظيفة 'main ()' قادرة أيضًا على قبول الوسائط. ومع ذلك ، فإن الاختلاف بين تمرير الوسيطات إلى الوظيفة 'main ()' من تمرير الوسائط إلى الوظائف الأخرى هو أنه يجب عليك تمرير الوسيطات عبر سطر الأوامر في الحالة السابقة. يرجع السبب في ذلك إلى أن الوظيفة 'main ()' نفسها هي وظيفة المحرك ، ولهذا لا توجد وظيفة أخرى قادرة على استدعاؤها وتمرير الحجج إليها. في هذه المقالة ، سنناقش المعلمتين للوظيفة 'main ()' ، أي 'argc' و 'argv' في C ++ في Ubuntu 20.04.

ما هو Argc و Argv في C ++ في Ubuntu 20.04؟

تشير المعلمة 'argc' إلى عدد المعطيات ، بينما تشير 'argv' إلى مصفوفة أحرف تحتوي على جميع الوسائط التي يتم تمريرها إلى الوظيفة 'main ()' من خلال سطر الأوامر في وقت تنفيذ برنامج في C ++. هنا ، تحتاج إلى معرفة أن 'argc' يعرض دائمًا عدد الوسيطة '1' أكثر من العدد الفعلي للوسيطات التي تم تمريرها. وذلك لأن اسم ملف الكائن يُحسب أيضًا كوسيطة سطر أوامر. يمكنك تمرير وسيطات سطر الأوامر التي تنتمي إلى أي نوع بيانات إلى الوظيفة 'main ()'. كل ما تحتاج إلى الاهتمام به هو أن هذه المعلمات مذكورة في النموذج الأولي لوظيفة 'main ()' الخاصة بك إذا كنت تريد الوصول إليها بداخلها. ومع ذلك ، يمكن أن تعمل الوظيفة 'main ()' بشكل جيد بدون هاتين المعلمتين. سيتم مناقشة هذا في القسم التالي من هذه المقالة ، وبعد ذلك سننتقل إلى استخدام هاتين المعلمتين في C ++ في Ubuntu 20.04.

الوظيفة الرئيسية بدون Argc و Argv في C ++:

بادئ ذي بدء ، نود أن نخبرك أن الوظيفة 'main ()' في C ++ يمكن أن تعمل بشكل جيد حتى بدون استخدام المعلمات '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 ++ نفسه يعمل بشكل جيد عندما نحاول تنفيذه عن طريق تمرير وسيطات سطر أوامر من نوع الحرف إليه. لذلك ، لم نكن بحاجة إلى تعديله أكثر من ذلك. كان علينا فقط تنفيذه باستخدام وسيطات سطر أوامر من نوع الحرف على النحو التالي:

$ . / CommandLine a b c d e f

هذا يعني أننا مررنا وسيطات سطر أوامر من ستة أحرف إلى برنامج C ++ أثناء تشغيله ، على سبيل المثال ، a و b و c و d و e و f.

الناتج الناتج عن تمرير وسيطات سطر الأوامر من نوع الحرف إلى نفس برنامج C ++ موضح أدناه:

إجمالي عدد الوسائط التي تم إرجاعها بواسطة برنامج C ++ هذا هو '7' ، أي وسيطات مكونة من ستة أحرف مررناها + اسم ملف الكائن. قام هذا البرنامج أيضًا بطباعة عناصر مصفوفة الأحرف 'argv' على المحطة الطرفية ، أي وسائط نوع الحرف الفعلي التي تم تمريرها إلى هذا البرنامج في وقت التنفيذ ، جنبًا إلى جنب مع اسم البرنامج.

استنتاج:

استهدفت هذه المقالة مناقشة وسيطتي سطر الأوامر ، والمعروفين أيضًا باسم معلمات الوظيفة 'main ()' ، أي 'argc' و 'argv'. تحدثنا عن أهمية هذين المعيارين بذكر استخدامهما. بعد ذلك ، شاركنا معك بعض الأمثلة التي تصور استخدام 'argc' و 'argv' في C ++ في Ubuntu 20.04. علاوة على ذلك ، أوضحنا أيضًا أنه حتى بدون استخدام هذه المعلمات ، يمكن أن تعمل الوظيفة 'main ()' بشكل جيد. لذلك ، بمجرد قراءة هذه المقالة ، ستفهم استخدام 'argc' و 'argv' بوضوح شديد في C ++.