0Pricing
C Academy · درس

بناء أدوات المحارف

أمثلة عملية

بناء أدوات المحارف درس مجاني في C Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C Academy 4 دروس في المجموع.

دمج ما تعلمتموه

يمكنكم الآن بناء أدوات صغيرة وعملية للمحارف بدمج العمليات الحسابية على char ومكتبة ctype وحلقات السلاسل النصية.

لنكتب بعض الدوال المساعدة الشائعة.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char c = 'g';
    printf("Upper: %c\n", toupper(c));
    return 0;
}

عدّ حروف العلة

يفحص عدّاد حروف العلة كل محرف مقابل المجموعة a, e, i, o, u، سواء كانت الحالة كبيرة أم صغيرة.

#include <stdio.h>
#include <ctype.h>

int count_vowels(const char *s) {
    int n = 0;
    for (int i = 0; s[i]; i++) {
        char c = tolower(s[i]);
        if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u') n++;
    }
    return n;
}

int main(void) {
    printf("%d\n", count_vowels("Education"));
    return 0;
}

عكس سلسلة نصية

اعكسوا السلسلة النصية موضعيًا بتبديل المحارف من الطرفين والتحرك نحو الوسط.

#include <stdio.h>
#include <string.h>

int main(void) {
    char s[] = "hello";
    int n = strlen(s);
    for (int i = 0; i < n / 2; i++) {
        char tmp = s[i];
        s[i] = s[n-1-i];
        s[n-1-i] = tmp;
    }
    printf("%s\n", s);
    return 0;
}

التحقق من التناظر

تُقرأ السلسلة المتناظرة بالطريقة نفسها من الأمام والخلف. قارنوا المواضع المتناظرة حتى تلتقي.

#include <stdio.h>
#include <string.h>

int is_palindrome(const char *s) {
    int i = 0, j = strlen(s) - 1;
    while (i < j) {
        if (s[i] != s[j]) return 0;
        i++; j--;
    }
    return 1;
}

int main(void) {
    printf("%d\n", is_palindrome("level"));
    printf("%d\n", is_palindrome("world"));
    return 0;
}

تبديل حالة الأحرف

يحوّل مبدّل الحالة الأحرف الكبيرة إلى صغيرة والعكس، ويترك المحارف غير الحرفية دون تغيير.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "Hello World";
    for (int i = 0; s[i]; i++) {
        if (isupper(s[i])) s[i] = tolower(s[i]);
        else if (islower(s[i])) s[i] = toupper(s[i]);
    }
    printf("%s\n", s);
    return 0;
}

حذف المحارف غير الرقمية

احتفظوا بمحارف الأرقام فقط من سلسلة نصية، فهذا مفيد لتنظيف أرقام الهواتف.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char *s = "(555) 123-4567";
    for (int i = 0; s[i]; i++) {
        if (isdigit((unsigned char)s[i])) putchar(s[i]);
    }
    putchar('\n');
    return 0;
}

تنفيذ atoi يدويًا

حوّلوا سلسلة رقمية إلى عدد صحيح بتجميع كل رقم: اضربوا المجموع الحالي في 10 ثم أضيفوا قيمة الرقم.

#include <stdio.h>
#include <ctype.h>

int my_atoi(const char *s) {
    int n = 0;
    for (int i = 0; isdigit((unsigned char)s[i]); i++) {
        n = n * 10 + (s[i] - '0');
    }
    return n;
}

int main(void) {
    printf("%d\n", my_atoi("427") + 3);
    return 0;
}

عدّ الكلمات

عدّوا الكلمات باكتشاف الانتقالات من محرف أبيض إلى محرف غير أبيض.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char *s = "the quick brown fox";
    int words = 0, in_word = 0;
    for (int i = 0; s[i]; i++) {
        if (isspace((unsigned char)s[i])) in_word = 0;
        else if (!in_word) { in_word = 1; words++; }
    }
    printf("words = %d\n", words);
    return 0;
}

كتابة الكلمات بحرف أول كبير

اجعلوا الحرف الأول من كل كلمة كبيرًا بتحويل أي حرف يأتي بعد محرف أبيض، أو يبدأ السلسلة، إلى حرف كبير.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "hello there friend";
    int start = 1;
    for (int i = 0; s[i]; i++) {
        if (isspace((unsigned char)s[i])) start = 1;
        else { if (start) s[i] = toupper(s[i]); start = 0; }
    }
    printf("%s\n", s);
    return 0;
}

شيفرة ROT13

تزيح ROT13 كل حرف 13 موضعًا مع الالتفاف حول الأبجدية. ويؤدي تطبيقها مرتين إلى استعادة النص الأصلي.

#include <stdio.h>
#include <ctype.h>

int main(void) {
    char s[] = "Hello";
    for (int i = 0; s[i]; i++) {
        char c = s[i];
        if (isupper(c)) s[i] = 'A' + (c - 'A' + 13) % 26;
        else if (islower(c)) s[i] = 'a' + (c - 'a' + 13) % 26;
    }
    printf("%s\n", s);
    return 0;
}

تكرار محرف

احسبوا عدد مرات ظهور محرف محدد في سلسلة نصية باستخدام حلقة بسيطة ومقارنة.

#include <stdio.h>

int main(void) {
    char *s = "mississippi";
    char target = 's';
    int count = 0;
    for (int i = 0; s[i]; i++) {
        if (s[i] == target) count++;
    }
    printf("'%c' appears %d times\n", target, count);
    return 0;
}

اختبار سريع

اختبروا مهاراتكم في أدوات المحارف.

مراجعة

بنيتم أدوات عملية للمحارف:

  • عدّ حروف العلة والكلمات وتكرار المحارف.
  • عكس السلاسل النصية والتحقق من التناظر.
  • تبديل حالة الأحرف وجعل أوائل الكلمات كبيرة.
  • تنفيذ atoi يدويًا وشيفرة ROT13.

الأسئلة الشائعة

هل درس «بناء أدوات المحارف» مجاني؟

نعم — نص درس «بناء أدوات المحارف» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C Academy 4 دروس في المجموع.

ماذا ستتعلم في «بناء أدوات المحارف»؟

أمثلة عملية تتمرن على C Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C Academy؟

لا تُشترط خبرة سابقة. C Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «بناء أدوات المحارف»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C Academy هذا؟

نعم. كل درس في C Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المحارف كأعداد صحيحة
  2. مكتبة ctype
  3. قراءة المحارف
  4. بناء أدوات المحارف
← العودة إلى C Academy