تسمح صفائف لمجموعة من المتغيرات لتجميع معا كمتغير واحد. هذا مفيد في حد ذاته ، ولكن أيضًا لأن السلاسل تقع في هذه الفئة. الأوتار ، وهي الطريقة التي نمثل بها الكلمات والجمل في لغات الكمبيوتر ، هي مجرد مجموعة من المتغيرات الشخصية. لذلك ، فإننا نمثل السلاسل باستخدام المصفوفات في C.
سيؤدي ذلك إلى إنشاء صفيف يسمى `my_array` يمكنه الاحتفاظ بـ 5 أعداد صحيحة. ومع ذلك ، لم يتم تعيين أي من المواضع في الصفيف (حتى الآن). يمكنك تحديد الصفيف ، وتعيين القيم في البداية:
لاحظ أنه في هذا المثال ، لم نتعامل مع تحديد رقم في الأقواس المربعة. وذلك لأن الأقواس المتعرجة لها قيم فيها سيتم تعيينها لكل موضع في الصفيف. يمكنك وضع رقم في الأقواس على أي حال ، طالما أنك تأكد من إنشاء مواقع ذاكرة كافية لتخزين القيم التي مررت بها.
عند تهيئة صفيف ، يمكنك تقديم قيم أقل من عناصر الصفيف. على سبيل المثال ، يقوم البيان التالي بتهيئة أول عنصرين فقط من my\_array:
float my\_array \[5\] = {5.0، 2.5}؛
إذا قمت بتهيئة مصفوفة بشكل جزئي ، يقوم المحول البرمجي بتعيين العناصر المتبقية إلى صفر.
والآن بعد أن تم التصريح عن الصفيف بقيم 5 ، فإنه يحتوي على 5 مواقع للذاكرة. خذ بعين الاعتبار هذا الجدول للحصول على مثال مرئي لذلك:
لاحظ أنه على الرغم من وجود 5 مواقع ذاكرة ، فإن مواضع الصفيف ترتفع فقط إلى 4. وهذا لأن المصفوفات في C (ومعظم اللغات الأخرى) تبدأ عند 0 ، لأنه يتم تنفيذ المصفوفات باستخدام المؤشرات. عندما تتصل بموضع في صفيف ، فأنت بالفعل تتصل بموقع الذاكرة هذا بالإضافة إلى رقم معين. للحصول على بداية الصفيف ، قم بنقل 0 مكان في الذاكرة ، للحصول على الموضع بعد ذلك ، قم بتحريك مكان واحد في الذاكرة ، وهكذا.
في ما يلي مثال على تعيين المصفوفة إلى 9 في الموضع 1:
هذا سوف يعلن `variable` ليكون عدد صحيح يساوي القيمة في الموضع 4 من `my_array` . ومع ذلك ، نظرًا لأن `variable` هو `int` مفرد وليس صفيفًا ، فهذا **ليس** رمزًا سيحقق النتيجة الصحيحة:
يمكن وضع أي عدد صحيح في الأقواس المربعة للحصول على موضع في الصفيف. يمكن أن تكون تلك الأعداد الصحيحة متغيرات أيضًا. ألق نظرة على هذا المثال ، الذي يطبع محتويات مصفوفة:
الصفائف هي مجموعات من المتغيرات ، والسلاسل عبارة عن مجموعات من الأحرف. ونتيجة لذلك ، يمكننا تمثيل السلاسل باستخدام مصفوفة. _يمكنك_ يعلن شيء في نفس الطريقة كما في السابق، ولكن ستحتاج إلى وضع '\\ 0' واحدة من القيم الخاصة بك (أكثر على ذلك في دقيقة واحدة!):
هذا أجمل بكثير. لا يتطلب منك حتى وضع "\\ 0" في النهاية ، إما. إذن ماذا كان هذا؟
### إنهاء الفصل
يتم إنهاء السلاسل في C فارغة ، مما يعني أنها تنتهي بالحرف الصفري. بهذه الطريقة ، سيعرف المحول البرمجي (ورمزك الخاص بك وكل شخص آخر) حيث تنتهي السلسلة: بمجرد أن يكون الحرف فارغًا ، تنتهي السلسلة.
بالطبع ، لا يوجد زر "فارغة" على لوحة المفاتيح ، ولكنك لا تزال بحاجة إلى كتابتها بطريقة ما. هذا ما يفعله \\ 0. عندما يرى المترجم C \\ 0 ، سيقوم بإدراج حرف فارغ. إنها تشبه طريقة \\ n طباعة سطر جديد.
### سلاسل الطباعة
شيء آخر يجعل C أسهل بالنسبة لنا هو طباعة الأوتار. بدلاً من إجبارك على طباعة كل حرف في الصفيف ، يمكنك فقط استخدام محدد تنسيق٪ s ، وتعامل السلسلة كما تفعل مع أي قيمة `int` أو `double` . في ما يلي مثال على الترحيب ، البرنامج العالمي منذ البداية ، والذي أصبح أكثر تعقيدًا مع السلاسل:
سلاسل الطباعة سهلة ، لكن العمليات الأخرى أكثر تعقيدًا بعض الشيء. ولحسن الحظ ، `string.h` مكتبة `string.h` على بعض الوظائف المفيدة لاستخدامها في عدد من المواقف.
#### النسخ: `strcpy`
`strcpy` (من 'نسخة السلسلة') نسخ سلسلة. على سبيل المثال ، سينسخ مقتطف الشفرة محتويات السلسلة `second` في السلسلة `first` :
`strcat` (من "سلسلة سلسلة") سَلسَلة سلسلة ، بمعنى أنها ستأخذ محتويات سلسلة واحدة وتضعها في نهاية سلسلة أخرى. في هذا المثال ، سيتم تجميع محتويات `second``first` :
يقارن `strcmp` (من 'مقارنة السلسلة') سلسلتين. القيمة الصحيحة التي تقوم بإرجاعها هي 0 إذا كانت هي نفسها ، ولكنها ستعود أيضًا سالبة إذا كانت قيمة الأول (بإضافة الأحرف) أقل من قيمة الثانية ، وإيجابية إذا كان الأول أكبر من الثاني . ألق نظرة على مثال لكيفية استخدام هذا:
لاحظ `!` ، وهي مطلوبة لأن هذه الدالة تقوم بإرجاع 0 إذا كانت هي نفسها. إن وضع نقطة التعجب هنا سيجعل المقارنة صحيحة.
#### تقسيم سلسلة: `strtok`
`strtok` (من "رمز السلسلة") يقطع سلسلة في سلسلة من الرموز المميزة باستخدام محدد. في هذا المثال ، يقطع strtok str str في سلسلة من الرموز المميزة باستخدام delimiter delim:
* تحتوي الصفائف على مواضع منفصلة يمكن الإعلان عنها باستخدام أقواس ، ويتم الوصول إليها باستخدام أقواس مربعة.
* السلاسل عبارة عن صفائف أيضًا ، ولكن يمكننا التعامل معها بطريقة مختلفة قليلاً: يمكن الإعلان عنها باستخدام علامات اقتباس مزدوجة ، وطباعتها باستخدام٪ s.