توقيع main الكامل
بدل main() الفارغة، تقدر تستقبل ما كتبه المستخدم بعد اسم البرنامج:
int main(int argc, char *argv[]) {
// argc: عدد المعاملات (بما فيها اسم البرنامج نفسه)
// argv: مصفوفة نصوص، كل عنصر معامل
return 0;
}
argv[0] وترتيب المعاملات
./program hello 42
argcيساوي3.argv[0]="./program"(اسم البرنامج نفسه).argv[1]="hello".argv[2]="42".argv[argc]مضمون أنهNULL— علامة نهاية المصفوفة.
طباعة كل المعاملات
#include <stdio.h>
int main(int argc, char *argv[]) {
for (int i = 0; i < argc; i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}
فحص العدد قبل الوصول
كل عناصر argv نصوص (char*)، حتى لو بدت أرقامًا — الوصول لمعامل غير موجود
سلوك غير معرّف:
if (argc < 2) {
printf("الاستخدام: %s <اسم>\n", argv[0]);
return 1;
}
printf("مرحبًا %s\n", argv[1]);
💡 لتحويل معامل نصّي مثل
argv[2]إلى عدد استخدمatoiأوstrtol— الدرس القادم.
أخطاء شائعة
- افتراض وجود معامل قبل فحص
argc. - نسيان أن
argv[0]هو اسم البرنامج وليس أول معامل حقيقي.
🎯 التالي: تحويل النصوص والأرقام.