Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

السلاسل النصية كمصفوفات char

جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 12 من 63.

في لغة C، لا يوجد نوع بيانات نصي (string) مدمج كما قد تجد في لغات البرمجة الأخرى. بدلاً من ذلك، يتم تمثيل النصوص كـ مصفوفات من الأحرف. هذا المفهوم الأساسي ضروري لفهم كيفية التعامل مع النصوص في برمجة C.

السلسلة النصية (string) في لغة C هي ببساطة تسلسل من الأحرف المخزنة في مواقع ذاكرة متتالية. لإنشاء سلسلة نصية، تقوم بالتصريح عن مصفوفة أحرف (character array) كبيرة بما يكفي لاستيعاب جميع الأحرف التي تحتاجها، بالإضافة إلى مساحة إضافية واحدة لحرف إنهاء خاص.

char greeting[6];  // يمكنه استيعاب 5 أحرف + المنتهي
char message[20]; // يمكنه استيعاب ما يصل إلى 19 حرفاً + المنتهي

الطريقة الأكثر ملاءمة للتعامل مع السلاسل النصية هي تهيئتها مباشرة باستخدام ثابت نصي (string literal) عند التصريح عن المصفوفة. تتولى لغة C تلقائيًا تفاصيل تخزين كل حرف في المصفوفة:

char greeting[6] = "Hello";
// هذا يخزن: 'H', 'e', 'l', 'l', 'o'، بالإضافة إلى حرف إنهاء خاص

يمكنك أيضاً جعل لغة C تحدد حجم المصفوفة تلقائياً عن طريق حذف تحديد الحجم عند التهيئة باستخدام سلسلة نصية ثابتة (string literal):

char greeting[] = "Hello";  // تجعل لغة C هذا الحجم 6 تلقائياً

إن فهم أن السلاسل النصية (strings) هي مصفوفات من الأحرف أمر بالغ الأهمية لأنه يوضح كيفية تعامل لغة C مع البيانات النصية ويهيئك للعمل مع دوال معالجة السلاسل النصية التي تعمل على هذه المصفوفات من الأحرف.

challenge icon

التحدي

سهل

اكتب برنامجاً بلغة C يوضح كيفية إنشاء والتعامل مع مصفوفات الأحرف لتخزين السلاسل النصية. يجب على برنامجك القيام بما يلي:

  1. الإعلان عن مصفوفة أحرف تسمى greeting بمساحة كافية لاستيعاب السلسلة النصية "Hello" (تذكر مراعاة حرف الإنهاء الصفري null terminator)
  2. تهيئة مصفوفة greeting بالقيمة النصية "Hello"
  3. الإعلان عن مصفوفة أحرف ثانية تسمى message تحتوي على 20 عنصراً
  4. تهيئة مصفوفة message بالقيمة النصية "Welcome"
  5. الإعلان عن مصفوفة أحرف ثالثة تسمى word دون تحديد الحجم، وترك لغة C تحدد الحجم تلقائياً عن طريق تهيئتها بالقيمة "Programming"
  6. طباعة السلاسل الثلاث جميعاً باستخدام printf مع محدد التنسيق %s
  7. طباعة حجم كل مصفوفة باستخدام sizeof لتوضيح مقدار الذاكرة التي تشغلها كل مصفوفة أحرف

يجب أن يعرض مخرج البرنامج النتائج بالتنسيق التالي:

greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12

يختبر هذا التحدي فهمك لكيفية الإعلان عن مصفوفات الأحرف لتخزين السلاسل النصية، وكيف يتم إنهاء السلاسل النصية تلقائياً بحرف صفري عند تعيينها لمصفوفات الأحرف، وكيف تحسب لغة C أحجام المصفوفات تلقائياً عندما تحذف تحديد الحجم أثناء التهيئة.

ورقة مرجعية

في لغة C، يتم تمثيل السلاسل النصية كـ مصفوفات من الأحرف. لا يوجد نوع بيانات مدمج للسلاسل النصية.

التصريح عن مصفوفة أحرف بحجم محدد:

char greeting[6];  // يمكنها استيعاب 5 أحرف + المنتهي
char message[20]; // يمكنها استيعاب ما يصل إلى 19 حرفاً + المنتهي

التهيئة باستخدام سلسلة نصية ثابتة:

char greeting[6] = "Hello";
// هذا يخزن: 'H', 'e', 'l', 'l', 'o'، بالإضافة إلى منتهي خاص

دع لغة C تحدد حجم المصفوفة تلقائياً:

char greeting[] = "Hello";  // تجعل لغة C هذا الحجم 6 تلقائياً

طباعة السلاسل النصية باستخدام محدد التنسيق %s:

printf("%s", greeting);

الحصول على حجم المصفوفة باستخدام sizeof:

sizeof(greeting)  // يعيد إجمالي البايتات التي تشغلها المصفوفة

جرّب بنفسك

#include <stdio.h>

int main() {
    // TODO: اكتب كودك هنا
    // قم بتعريف وتهيئة مصفوفات الأحرف كما هو محدد في التحدي
    
    // طباعة السلاسل النصية وأحجامها
    printf("greeting: %s\n", greeting);
    printf("message: %s\n", message);
    printf("word: %s\n", word);
    printf("Size of greeting: %lu\n", sizeof(greeting));
    printf("Size of message: %lu\n", sizeof(message));
    printf("Size of word: %lu\n", sizeof(word));

    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow