الصفحة الرئيسية > برمجة > كيف تحسب عدد أحرف كلمة في ال C

كيف تحسب عدد أحرف كلمة في ال C


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


في لغة C لا توجد متغيرات لتخزين الكلمات لكن بدل ذلك نستخدم مصفوفات إلا أنه هذه الأخيرة محدودة من حيث العناصر حيث يجب عليك إما تحديد عدد عناصر المصفوفة
أو أن المترجم سيقوم بذلك أثناء عملية الترجمة هذا بعد تحديد الكلمة .
مثال :

char str[]=”sife”;

أثناء عملية الترجمة ستكون هكذا :

char str[3]=”sife”;

الطريقة الأخرى هي بإعطاء مؤشر كالآتي :

char *str=”sife”;

حيث تكون في الذاكرة كالآتي :

https://0xsife.wordpress.com/wp-content/uploads/2009/09/str.jpg

حيث أن NULL في الذاكرة تكون 0\ و ليست 0 الذي نقوم به في الحساب أما في الكلمة ستكون بمعنى النهاية ،الآن و عرفنا كيف يتم تخزين كلمة في الذاكرة حان دور معرفة كيفية حساب عدد حروف كلمة لننظر للبرنامج الآتي :

https://0xsife.wordpress.com/wp-content/uploads/2009/09/strpro.jpg

السطر 4 متغير نخزن فيه عدد الأحرف أما السطر 5 فهو مؤشر للكلمة المراد حسابها ،السطر 6 إستخدمنا فيه التكرار حيث str* تعني القيمة الموجودة في الذاكرة فائدتها في هذه الحلقة هي فحص إذا ما تم الوصول إلى النهاية أما لا ،السطر 8 مع كل زيادة في عنوان أي النتقال إلى حرف جديد نزيد المتغير بقيمة واحدة أما السطر 9 فهو الإنتقال إلى العنوان اللاحق أي الإنتقال إلى الحرف اللاحق ،السطر 11 هو لطابعة عدد الأحرف الموجودة .
كان من الممكن تبديل البرنامج السابق بهذا :

#include<stdio.h>
main()
{
int i=0;
char *str=”abdelrazak”;
while(*str!=”)
{
i++;
*str++;
}
printf(“%d”,i);
return 0;
}

الإختلاف الوحيد سيكون في السطر 6 حيث أن الشرط هو أننا لم نصل إلى نهاية الكلمة أي 0\ سنقوم بزيادة عنوان في الذاكرة مع زيادة في المتغير i .

التصنيفات :برمجة الوسوم:
  1. جمال
    5 سبتمبر 2009 عند 7:50 م

    سلام،
    مشكور سيف على البرنامج، بسيط ومفهوم .

  2. حمزة
    8 سبتمبر 2009 عند 9:29 م

    شرح رائع وجميل هكذا شروحات مبسطة جميلة وتحث على المتابعة
    بارك الله فيك واعطاك الله ماتتمنى

  1. No trackbacks yet.

أضف تعليق