العودة إلى الدورة

مقدمة عن السلاسل النصية (مصفوفات الحروف)

لغة C: من الصفر إلى الاحتراف - الدليل الشامل للمبتدئين

الدرس 30: مقدمة عن السلاسل النصية (مصفوفات الحروف)

في لغة C، لا يوجد نوع بيانات مدمج باسم String. يتم تعريف السلسلة النصية (String) كمصفوفة أحادية الأبعاد من الأحرف تنتهي بحرف خاص يسمى حرف الصفر (\0).

حرف الصفر (\0)

يشير حرف الصفر إلى نهاية السلسلة النصية. الدوال التي تعالج السلاسل النصية (مثل printf مع %s) تعتمد على العثور على هذا الرمز للتوقف.

التصريح عن السلسلة النصية وتهيئتها

1. تهيئة مصفوفة الحروف (يدوياً)

يجب علينا تضمين حرف الصفر صراحةً.

c char name[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; // يتطلب حجماً 6 لـ 5 أحرف + حرف الصفر

2. تهيئة السلسلة النصية بقيمة مباشرة (موصى به)

استخدام علامات الاقتباس المزدوجة يضيف حرف الصفر تلقائياً (\0).

c char greeting[] = "Hello"; // المترجم يحسب الحجم كـ 6

// إذا قمنا بتحديد الحجم صراحةً، تأكد أنه كبير بما يكفي: char city[10] = "Paris"; // تم تخصيص 10 بايت، 'Paris' تأخذ 6 (5 + \0)

قراءة السلاسل النصية

باستخدام scanf()

تتوقف scanf() عن قراءة المدخلات عندما تواجه مسافة بيضاء (مسافة، سطر جديد، تبويب). لاحظ أننا لا نستخدم & عند قراءة اسم مصفوفة.

c char first_name[20]; printf("أدخل الاسم الأول: "); scanf("%s", first_name); // يقرأ كلمة واحدة فقط

باستخدام fgets() (موصى به للأمان)

تعتبر fgets() أكثر أماناً لأنها تمنع تجاوز سعة التخزين المؤقت (buffer overflow) من خلال السماح لك بتحديد الحجم الأقصى. تقرأ حتى تصل لسطر جديد أو تصل للحد الأقصى للحجم.

c char full_name[50]; printf("أدخل الاسم الكامل: "); // تقرأ حتى 49 حرفاً من stdin وتخزنها في full_name fgets(full_name, 50, stdin);