مزادات السلاسل الشائعة في لغة C [مع أمثلة]

نشرت: 2020-10-21

السلاسل في لغة C هي مصفوفة من الأحرف تنتهي بأحرف خالية ('0'). يشير الحرف الفارغ في نهاية السلسلة إلى نهايتها ويتم دائمًا إحاطة السلاسل بعلامات اقتباس مزدوجة. في لغة C ، يتم تضمين الأحرف بعلامات اقتباس مفردة. بعض الأمثلة على كل منهما موضحة أدناه ؛

مثال أو تمثيل لأحرف C وسلاسل

  • سلسلة char [10] = {'s'، 'd'، 'f'، 'd'، 't'، 'j'، 'a'، '\ 0'}؛
  • سلسلة char [10] = "أعذب" ؛
  • سلسلة char [] = "أعذب" ؛

هناك اختلاف طفيف بين تصريحات السلاسل في كلا البيانين أعلاه. كما هو الحال عندما نعلن أن char كسلسلة [10] ، يتم تخصيص 10 بايت من مساحة الذاكرة للاحتفاظ بـ 10 قيم من السلسلة ، بينما عندما نعلن أنها سلسلة [] ، يتم تخصيص الذاكرة في وقت تنفيذ البرنامج.

جدول المحتويات

إعلان السلسلة والتهيئة

في برمجة C ، يمكن التصريح عن السلاسل بطريقتين كما هو موضح أعلاه. في برمجة لغة سي ، السلسلة هي سلسلة من الأحرف التي تنتهي بحرف فارغ أو "\ 0". ويرد مثال على ذلك أدناه:

char temp [] = "سلسلة temp" ؛

عندما يتم التصريح عن سلسلة من الأحرف من نوع char محاط بعلامة اقتباس مزدوجة ، يتم إلحاق \ 0 تلقائيًا بنهاية السلسلة. علي سبيل المثال:

char temp [] = "سلسلة مؤقتة" ؛

ر ه م ص س ر ص أنا ن ز \ 0

إعلان السلسلة

يتم التصريح عن سلسلة في اللغة C بالطريقة التالية:

شار درجة الحرارة [5] ؛

ث [0] ث [1] ث [2] ث [3] ث [4]

بهذه الطريقة ، يمكننا تهيئة سلسلة طولها 5.

تهيئة السلسلة

يمكن إجراء تهيئة السلسلة بعدة طرق وبعضها مذكور أدناه:

char t [] = "سلسلة مؤقتة" ؛

char t [10] = "سلسلة مؤقتة" ؛

char t [] = {'t'، 'e'، 'm'، 'd'، '\ 0'}؛

char t [5] = {'t'، 'e'، 'm'، 'd'، '\ 0'}؛

تي ه م ص \ 0

ر [0] ر [1] ر [2] ر [3] ر [4]

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

قراءة: مصفوفة سلسلة في جافا: مصفوفة سلسلة جافا مع أمثلة على الترميز

تعيين قيم للسلاسل

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

شار تي [100] ؛

ر = "قيمة درجة الحرارة" ؛

التعامل مع السلسلة في C.

سنقوم الآن بإدراج بعض وظائف السلسلة الشائعة في لغة C والتي تجعل مناولة السلسلة أسهل كثيرًا. يمكن إجراء عمليات متعددة على السلسلة مثل قراءة السلسلة أو نسخ أو عكس السلسلة والعديد من العمليات الأخرى بسهولة على السلاسل باستخدام هذه الوظائف.

يمكن استخدام عوامل السلسلة أو وظائف السلسلة مباشرة لمعالجة السلاسل. هنا ، في هذه المقالة سنشرح وظائف المكتبة مثل get () ، و puts () ، و strlen () ، و strcopy () ، والعديد من الوظائف الأخرى لشرح معالجة السلسلة في C.

في بعض الأحيان يتعين على المبرمجين كتابة وظائف السلسلة لمعالجتها حسب المشكلة المطلوبة. ومع ذلك ، يمكن إجراء معالجة السلسلة يدويًا ، ولكن هذا يمكن أن يجعل البرمجة معقدة وكبيرة جدًا.

توجد مكتبة قياسية لوظائف السلسلة في لغة C تُعرف باسم "string.h". يحتوي ملف الرأس هذا بامتداد ".h" على العديد من وظائف معالجة السلاسل التي لها بناء جملة مختلف. سنناقش عددًا قليلاً منهم في القسم أدناه من هذه المقالة:

قائمة ببعض وظائف معالجة السلاسل الشائعة في لغة ج

دور وصف
سترلين () يمكن حساب طول السلسلة
ستركبي () يمكن نسخ محتوى سلسلة إلى أخرى
ستراتا () تُستخدم لربط سلسلتين أو ربطهما
ستركمب () يمكن أن تقارن بين سلسلتين
سترلور () يمكن تحويل السلسلة إلى أحرف صغيرة
ستروبر () يستخدم لتحويل أحرف السلسلة إلى أحرف كبيرة
ستريف (مخرج) يستخدم لعكس السلسلة

عندما يتعين عليك استخدام أي من وظائف معالجة السلسلة في برنامجك ، فإن الوظائف لا تقتصر فقط على هذه الوظائف العديدة. هناك العديد من الوظائف الأخرى كذلك. لذلك دعونا نناقشهم:

1) يضع () ويحصل ()

يتم استخدام الوظيفتين الشائعتين لملف رأس السلسلة ويضعها لأخذ المدخلات من المستخدم وعرض السلسلة على التوالي. يتم تعريف كل من هاتين الوظيفتين في ملف string.h. دعنا نرى مثالًا واحدًا على هذه الوظائف:

# تضمين main ()

انت مين()

{

شار درجة الحرارة [20] ؛

printf ("أدخل اسمك") ؛

يحصل (درجة الحرارة) ؛

printf ("My Name is:") ؛

يضع (درجة الحرارة) ؛

العودة 0 ؛

}

2) سترات ()

بالنسبة للحالات التي يلزم فيها إلحاق سلسلة واحدة في نهاية سلسلة أخرى ، يتم استخدام هذه الوظيفة. يمكن للوظيفة strcat إلحاق نسخة من سلسلة المصدر في نهاية سلسلة الوجهة. يجب على المستخدم تمرير وسيطتين موضحتين أدناه:

ط) src

ب) د

هنا يتم تحديد سلسلة “src” ، بينما في مكان “dest” ، يتم تحديد سلسلة الوجهة التي يتعين علينا إلحاق سلسلة المصدر بها.

مثال

# تضمين <string.h>

انت مين()

{

char src [20] = "before"؛

char dest [20] = "بعد" ؛

strcat (dest ، src) ؛

يضع (ديمر) ؛

العودة 0 ؛

}

سيكون الإخراج: بعد قبل

3) وظيفة strlen ()

هناك وظيفة أخرى لملف رأس السلسلة التي يمكن استخدامها مباشرة للسلاسل وهي strlen (). يمكنك استخدام الدالة strlen () ، وهي دالة السلسلة في C ، عندما يتعين عليك معرفة طول أي سلسلة. ومع ذلك ، يمكن للمرء أيضًا كتابة برنامج يدويًا لمعرفة طول أي سلسلة ، ولكن استخدام هذه الوظيفة المباشرة يمكن أن يوفر وقتك والمثال أدناه:

# تضمين <stdio.h>

انت مين()

{

طول int

char s [20] = "نحن هنا" ؛

الطول = strlen (s) ؛

printf ("\ طول السلسلة =٪ d \ n" ، الطول) ؛

العودة 0 ؛

}

طول السلسلة = 11

4) الدالة strcpy ()

إذا كان عليك نسخ محتوى سلسلة واحدة إلى سلسلة أخرى ، فسيتم استخدام هذه الوظيفة. بناء جملة الوظيفة هو strcpy (dest ، source). يمكن للوظيفة نسخ محتوى سلسلة إلى أخرى. فيما يلي مثال على الوظيفة:

# تضمين <string.h>

انت مين()

{

char src [20] = "الوجهة" ؛

char dest [20] = ""؛

printf ("\ n سلسلة المصدر =٪ s" ، src) ؛

printf ("\ n سلسلة الوجهة =٪ s" ، dest) ؛

strcpy (dest ، src) ؛

printf ("\ n سلسلة مستهدفة بعد strcpy () =٪ s" ، dest) ؛

العودة 0 ؛

}

انتاج |

سلسلة المصدر هي = الوجهة

السلسلة الهدف =

السلسلة المستهدفة بعد strcpy () = الوجهة

تعلم: StringBuffer مقابل StringBuilder: الفرق بين StringBuffer و StringBuilder

5) وظيفة strcmp ()

لمقارنة سلسلتين لمعرفة ما إذا كانتا متطابقتين أم لا ، يمكننا استخدام الدالة strcmp (). ترجع الدالة قيمة محددة قد تكون إما 0 أو> 0 أو <0. في هذه الوظيفة ، يتم التعامل مع القيمتين اللتين تم تمريرهما على أنهما حساسة لحالة الأحرف يعني "أ" و "أ" تعامل كأحرف مختلفة. تُستخدم القيم التي تُرجعها الدالة على النحو التالي:

i) يتم إرجاع 0 عندما تكون سلسلتان متماثلتين

ii) إذا كانت str1 <str2 ، فسيتم إرجاع قيمة سالبة

iii) إذا كانت str1> str2 ، فسيتم إرجاع قيمة موجبة

مثال:

# تضمين <stdio.h>

# تضمين <string.h>

انت مين()

{

char str1 [] = ”نسخة” ؛

شار str2 [] = "كأس" ؛

int أنا ، ي ، ك ؛

أنا = strcmp (str1، "نسخ") ؛

j = strcmp (str1، str2) ؛

k-strcmp (str1، “f”) ؛

printf ("\ n٪ d٪ d٪ d" ، I ، j ، k) ؛

العودة 0 ؛

}

الخرج: 0-1 1

6) وظائف strlwr () / strupr ()

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

# تضمين <stdio.h>

# تضمين <string.h>

انت مين()

{

char str [] = "CONVERT me to the Lower Case"؛

printf ("٪ s \ n" ، strlwr (str)) ؛

العودة 0 ؛

}

الإخراج: حولني إلى الأحرف الصغيرة

وبالمثل ، إذا استخدمنا وظيفة strupr بدلاً من strlwr ، فسيتم تحويل كل المحتوى إلى أحرف كبيرة. يمكننا استخدام دالة strupr ، المحددة في ملف رأس السلسلة. من خلال هذه الوظيفة ، يتم تحويل جميع أحرف السلسلة ، وذلك أيضًا بدون أي إجراء يدوي طويل.

7) وظيفة strrev ()

إذا كنت تريد عكس أي سلسلة دون كتابة أي برنامج ضخم أو شامل يدويًا ، فيمكنك استخدام هذه الوظيفة. تستخدم الدالة strrev () لعكس محتوى السلسلة. تستخدم وظيفة Strrev للتحقق من طبيعة السلسلة ، سواء كانت السلسلة المحددة متماثلة أم لا. العديد من الاستخدامات والتطبيقات الأخرى موجودة أيضًا لوظيفة عكس السلسلة. أحد استخداماته مذكور أدناه:

# تضمين <stdio.h>

# تضمين <string.h>

انت مين()

{

char temp [20] = "عكس" ؛

printf ("السلسلة قبل الانعكاس هي:٪ s \ n" ، درجة الحرارة) ؛

printf (“String after strrev ():٪ s”، strrev (temp))؛

العودة 0 ؛

}

بعض وظائف التعامل مع الأوتار لغرض:

كما قلنا سابقًا ، يوجد المزيد من وظائف السلسلة في C.

دور هدف
strchr () تقوم بإرجاع مؤشر إلى التواجد الأول للحرف في str1
strdup () يمكن أن يكرر السلسلة
strset () يضبط كل أحرف سلسلة على الحرف المحدد
strrchr () يستخدم لتحديد تواجد أول حرف تأشير

اقرأ أيضًا: فئة الماسح الضوئي في Java: أنواع المنشئات والأساليب وكيفية استخدامها

الكلمات الأخيرة

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

إذا كنت مهتمًا بمعرفة المزيد حول Java و OOPs وتطوير البرامج الكاملة ، تحقق من upGrad & IIIT-B's دبلوم PG في تطوير البرامج الكامل المكدس المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، 9 + المشاريع ، والتعيينات ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

استعد لمهنة المستقبل

تعلم موثوق به في الصناعة - شهادة معترف بها في الصناعة.
يتعلم أكثر