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

سلاسل C النصية - الجزء الثاني

جزء من قسم Fundamentals في رحلة C++ على Coddy — الدرس 68 من 74.

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

على سبيل المثال:

// صحيح: "Hello" تحتاج إلى 6 مساحات
// (5 أحرف + '\0')
char str1[6] = "Hello";
// خطأ: المصفوفة صغيرة جداً!
// "Hello" تحتاج إلى 6 مساحات، ولكن تم توفير 5 فقط
char str2[5] = "Hello";
// قد يتسبب هذا في حدوث مشكلات
// صحيح: المساحة الإضافية لا بأس بها
// مساحة أكثر من كافية (10 > 6 مطلوبة)
char str3[10] = "Hello";
// مثال يوضح عدد الأحرف:
char name[5] = "John";  // يحتاج إلى 5 مساحات:
// J + o + h + n + '\0' = 5 أحرف

يمكنك الوصول إلى الأحرف الفردية في سلسلة نصية بنمط C باستخدام تدوين المصفوفة:

char str[] = "Hello";
char first = str[0]; // 'H'
char third = str[2]; // 'l'

يمكنك أيضاً تعديل الأحرف في سلسلة نصية بنمط C، طالما أنك لا تتجاوز حدود المصفوفة:

char str[] = "Hello";
str[0] = 'J';
std::cout << str; // يطبع "Jello"

ومع ذلك، لا يمكنك تعيين سلسلة نصية جديدة مباشرة إلى سلسلة نصية بنمط C بعد التصريح عنها. ستحتاج إلى استخدام دوال مثل strcpy لنسخ السلاسل النصية، وهو ما سنغطيه في دروس لاحقة.

ورقة مرجعية

عند التصريح عن سلاسل النصوص بنمط C (C-style strings)، قم بتخصيص مساحة لجميع الأحرف بالإضافة إلى حرف واحد للمنهي الصفري (null terminator) '\0':

// صحيح: "Hello" تحتاج إلى 6 مساحات (5 أحرف + '\0')
char str1[6] = "Hello";

// خطأ: المصفوفة صغيرة جداً!
char str2[5] = "Hello"; // قد يسبب هذا مشاكل

// صحيح: المساحة الإضافية لا بأس بها
char str3[10] = "Hello";

الوصول إلى الأحرف الفردية باستخدام تدوين المصفوفة (array notation):

char str[] = "Hello";
char first = str[0]; // 'H'
char third = str[2]; // 'l'

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

char str[] = "Hello";
str[0] = 'J';
std::cout << str; // يخرج "Jello"

ملاحظة: لا يمكنك تعيين سلسلة نصية جديدة مباشرة إلى سلسلة نصية بنمط C بعد التصريح عنها. استخدم دوال مثل strcpy لنسخ السلاسل النصية.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

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

جميع دروس Fundamentals