سلاسل 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 لنسخ السلاسل النصية.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص3المتغيرات - الجزء الثاني
التصريح عن النوعقواعد التسميةمراجعة - تهيئة المتغيراتتحويل الأنواع - الجزء الأولتحويل الأنواع - الجزء الثاني9حلقات التكرار
حلقة For - الجزء الأولحلقة Whileحلقة Do WhileBreakContinueحلقة For - الجزء الثانيالحلقات المتداخلةالحلقات اللانهائيةمراجعة - Dynamic Input12السلاسل النصية
سلاسل C النصية - الجزء الأولسلاسل C النصية - الجزء الثانيعمليات السلاسل النصيةدوال السلاسل النصية - الجزء الأولدوال السلاسل النصية - الجزء الثاني