استخدام strlen()
جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 15 من 63.
لقد تعلمت كيفية قراءة السلاسل النصية من مدخلات المستخدم، ولكنك الآن بحاجة إلى طريقة لتحديد طول تلك السلاسل. توفر لغة C دالة strlen() من مكتبة <string.h> خصيصاً لهذا الغرض.
تقوم الدالة strlen() بحساب عدد الأحرف في سلسلة نصية، وتتوقف عندما تصل إلى النهاية الصفرية \0. والأهم من ذلك، أنها لا تتضمن النهاية الصفرية في حسابها - فهي تحسب فقط الأحرف المرئية الفعلية.
#include <stdio.h>
#include <string.h>
char word[] = "Hello";
int length = strlen(word);
printf("Length: %d\n", length); // يطبع: Length: 5لاستخدام strlen()، يجب عليك تضمين الترويسة <string.h> في الجزء العلوي من برنامجك. تأخذ الدالة سلسلة نصية كمعامل لها وتعيد عدداً صحيحاً يمثل عدد الأحرف قبل علامة الإنهاء الفارغة (null terminator).
هذه الوظيفة مفيدة بشكل خاص عندما تحتاج إلى معرفة مقدار المساحة التي تشغلها سلسلة نصية، أو التحقق من طول المدخلات، أو إجراء عمليات تعتمد على حجم السلسلة. إنها واحدة من أكثر وظائف السلاسل النصية استخداماً في برمجة C.
التحدي
سهلاكتب برنامجاً بلغة C يقرأ كلمات متعددة من الإدخال ويحلل أطوالها باستخدام دالة strlen(). يجب على برنامجك القيام بما يلي:
- قراءة عدد صحيح
nيمثل عدد الكلمات التي سيتم معالجتها - لكل كلمة من الكلمات الـ
n:- الإعلان عن مصفوفة أحرف (character array) تحتوي على 50 عنصراً لتخزين الكلمة
- قراءة الكلمة باستخدام
scanf - استخدام
strlen()لحساب طول الكلمة - طباعة الكلمة وطولها بالتنسيق المحدد
- بعد معالجة جميع الكلمات، قم بحساب وطباعة العدد الإجمالي للأحرف في جميع الكلمات
- إيجاد وطباعة طول أطول كلمة تم العثور عليها
تذكر تضمين ملف الترويسة <string.h> لاستخدام دالة strlen().
يجب أن يعرض مخرجك النتائج بالتنسيق التالي:
Word: [word] - Length: [length]
Word: [word] - Length: [length]
...
Total characters: [total]
Longest word length: [max_length]على سبيل المثال، إذا كان الإدخال هو:
3
hello
programming
Cيجب أن يكون مخرجك:
Word: hello - Length: 5
Word: programming - Length: 11
Word: C - Length: 1
Total characters: 17
Longest word length: 11يختبر هذا التحدي فهمك لاستخدام strlen() لقياس أطوال السلاسل النصية، ومعالجة سلاسل نصية متعددة باستخدام الحلقات التكرارية (loops)، وإجراء الحسابات بناءً على بيانات طول السلسلة.
ورقة مرجعية
تقوم الدالة strlen() من المكتبة <string.h> بحساب عدد الأحرف في السلسلة النصية، باستثناء حرف الإنهاء الفارغ \0:
#include <stdio.h>
#include <string.h>
char word[] = "Hello";
int length = strlen(word);
printf("Length: %d\n", length); // يطبع: Length: 5تأخذ الدالة سلسلة نصية كمعامل لها وتعيد عدداً صحيحاً يمثل عدد الأحرف المرئية قبل حرف الإنهاء الفارغ.
جرّب بنفسك
#include <stdio.h>
#include <string.h>
int main() {
// قراءة عدد الكلمات
int n;
scanf("%d", &n);
// متغيرات لتتبع الإجماليات
int total_characters = 0;
int max_length = 0;
// TODO: اكتب كودك هنا
// معالجة كل كلمة باستخدام حلقة (loop)
// لكل كلمة:
// - تعريف مصفوفة أحرف بـ 50 عنصراً
// - قراءة الكلمة باستخدام scanf
// - حساب الطول باستخدام strlen()
// - طباعة الكلمة وطولها
// - تحديث total_characters و max_length
// طباعة النتائج النهائية
printf("Total characters: %d\n", total_characters);
printf("Longest word length: %d\n", max_length);
return 0;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية