اذهب إلى المحتوى
  • 0

كيفية تمرير مدخلات إلى برنامج مكتوب بلغة ++C؟

Mohssen A Mohssen

السؤال

لدي برنامج بسيط مكتوب بلغة ++C وأريد أن أقوم بتمرير بعض البيانات عند تشغيله من خلال سطر الأوامر:

C:\> main.exe myValue1 myValue2

كيف أصل إلى هذه المدخلات من داخل البرنامج نفسه؟ هل يجب أن أستعمل مكتبة معينة؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

لا تحتاج إلى أي مكتبات للقيام بهذا الأمر حيث يقوم المصرِّف تلقائيًا بتمرير عدد هذه القيم المدخلة arguments إلى البرنامج وقيمها أيضًا إلى الدالة main، لذلك تحتاج إلى أستقبال هذه القيم في شكل معاملات parameters

int main(int argc, char** argv) {
  std::cout << "The total arguments is " << argc << std::endl;
  std::cout << "The file name is " << argv[0] << std::endl;
  std::cout << "The first argument is " << argv[1] << std::endl;
  return 0; 
}

عند تشغيل البرنامج السابق وتمرير كلمة Hsoub إليه فستجد أن البرنامج يقوم بطباعة التالي:

C:\> main.exe Hsoub
The total arguments is 2
The file name is main.exe
The first argument is Hsoub

المعامل الأول الذي يتم تمريره إلى الدالة main هو عدد صحيح عبارة عن عدد المدخلات، بينما المعامل الثاني فيعبر عن كل القيم الممرة وتكون أول قيمة هي اسم البرنامج نفسه.

ملاحظة: المعامل الأول يكون دائمًا اسم البرنامج نفسه في سطر الأوامر (main.exe)، لذلك فإن سنجد أن عدد المدخلات في المثال السابق هو 2 وليس 1

يمكن أيضًا إستخدام الكود التالي وستحصل على نفس النتيجة:
 

int main(int argc, char** argv) {
  // ...
}

ملاحظة في حالة تمرير أكثر من معامل سيتم الفصل بينهم من خلال المسافة:

C:\> main.exe Hello World
The total arguments is 3
The file name is main.exe
The first argument is Hello

في المثال السابق يتم تمرير كلمة Hello كمعامل ثاني وكلمة World كمعامل ثالث، ولكي يتم تتمرير الكلمتين كمعامل واحد فقط يجب أن يتم وضعهم داخل علامة تنصيص، على النحو التالي:

C:\> main.exe "Hello World"
The total arguments is 3
The file name is main.exe
The first argument is Hello World
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...