0Pricing
C Academy · درس

قراءة المحارف

getchar وputchar

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

قراءة المحارف المفردة

توفر C الدالة getchar() لقراءة محرف واحد في كل مرة من الإدخال القياسي، والدالة putchar() لكتابة محرف واحد إلى الإخراج القياسي.

وتوجد كلتاهما في <stdio.h>.

#include <stdio.h>

int main(void) {
    putchar('H');
    putchar('i');
    putchar('\n');
    return 0;
}

أساسيات putchar

تكتب putchar(c) المحرف c وتعيد المحرف المكتوب، أو تعيد EOF عند حدوث خطأ.

وهي أبسط طريقة لإخراج بايت واحد.

#include <stdio.h>

int main(void) {
    for (char c = 'A'; c <= 'E'; c++) {
        putchar(c);
    }
    putchar('\n');
    return 0;
}

تعيد getchar قيمة من النوع int

تعيد getchar() قيمة من النوع int لا char. وهذا مهم لأنها يجب أن تتمكن من إعادة EOF، وهي قيمة تختلف عن أي محرف حقيقي.

خزّنوا النتيجة دائمًا في متغير من النوع int.

#include <stdio.h>

int main(void) {
    int c = 'A';
    printf("Stored value: %d\n", c);
    return 0;
}

ما هي EOF

تعني EOF نهاية الملف. وتعيدها getchar() عندما لا يتبقى أي إدخال.

وتكون قيمتها عادةً -1، ولهذا تستخدم getchar النوع int حتى لا تختلط مع البايت 255.

#include <stdio.h>

int main(void) {
    printf("EOF has value %d\n", EOF);
    return 0;
}

نمط حلقة القراءة

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

  • أسندوا القيمة داخل الشرط.
  • قارنوا القيمة مع EOF.
#include <stdio.h>

int main(void) {
    int c;
    while ((c = getchar()) != EOF) {
        putchar(c);
    }
    printf("Reached end of input\n");
    return 0;
}

عدّ المحارف

من المهام الشائعة عدّ عدد المحارف التي تمت قراءتها. زيدوا العداد داخل حلقة القراءة.

#include <stdio.h>

int main(void) {
    int c;
    long count = 0;
    while ((c = getchar()) != EOF) {
        count++;
    }
    printf("Read %ld characters\n", count);
    return 0;
}

الإخراج بالأحرف الكبيرة

يمكنكم تحويل كل محرف قبل كتابته. يُحوَّل هنا كل محرف تتم قراءته إلى حرف كبير باستخدام toupper.

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

int main(void) {
    int c;
    while ((c = getchar()) != EOF) {
        putchar(toupper(c));
    }
    return 0;
}

عدّ الأسطر

يخبركم عدّ محارف السطر الجديد بعدد الأسطر التي تمت قراءتها. اختبروا كل محرف مقابل '\n'.

#include <stdio.h>

int main(void) {
    int c;
    int lines = 0;
    while ((c = getchar()) != EOF) {
        if (c == '\n') lines++;
    }
    printf("Lines: %d\n", lines);
    return 0;
}

إعادة محرف إلى الدفق

تعيد ungetc(c, stdin) محرفًا واحدًا إلى دفق الإدخال، بحيث تعيده القراءة التالية مرة أخرى.

يفيد ذلك عند قراءة محرف زائد أثناء الفحص.

#include <stdio.h>

int main(void) {
    ungetc('X', stdin);
    int c = getchar();
    printf("Got back: %c\n", c);
    return 0;
}

getchar مقارنةً بـ scanf

تمنحكم getchar تحكمًا دقيقًا على مستوى البايت، بينما تحلل scanf الإدخال المنسّق.

تُعدّ getchar الأداة المناسبة للمعالجة محرفًا محرفًا، مثل المرشحات ومحللات الرموز.

#include <stdio.h>

int main(void) {
    int c = '5';
    if (c >= '0' && c <= '9') {
        printf("It is a digit: %c\n", c);
    }
    return 0;
}

هيكل مرشح بسيط

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

#include <stdio.h>

int main(void) {
    int c;
    while ((c = getchar()) != EOF) {
        if (c != ' ') {
            putchar(c);
        }
    }
    return 0;
}

اختبار سريع

اختبروا فهمكم لقراءة المحارف.

مراجعة

تعلمتم قراءة المحارف وكتابتها:

  • تقرأ getchar() محرفًا واحدًا وتعيد قيمة من النوع int.
  • تكتب putchar(c) محرفًا واحدًا.
  • تشير EOF إلى نهاية الإدخال؛ استخدموا حلقة while ((c = getchar()) != EOF).
  • يمكن لـ ungetc إعادة محرف إلى الدفق.

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

هل درس «قراءة المحارف» مجاني؟

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

ماذا ستتعلم في «قراءة المحارف»؟

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

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

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

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

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

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

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

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

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