تخطَّ إلى المحتوى

isalpha وعائلة ctype.h

تصنيف الأحرف وتحويلها isalpha وعائلة ctype.h

مكتبة ctype.h توفّر دوالًا سريعة لفحص نوع الحرف (حرف؟ رقم؟ فراغ؟) وتحويل حالة الأحرف بين كبيرة وصغيرة.

كل دوال ctype.h تستقبل قيمة int تمثّل حرفًا (عادة نتيجة قراءة char) وتُرجع 0 لو الشرط غير محقّق وقيمة غير صفرية لو تحقّق — تُستخدم عادة مباشرة داخل شرط if. الأشيع: isalpha (حرف أبجدي)، isdigit (رقم عشري)، isalnum (حرف أو رقم)، isspace (فراغ بأنواعه: مسافة، تاب، سطر جديد).

toupper وtolower يحوّلان حالة حرف أبجدي واحد فقط (لا تعمل على نصوص كاملة دفعة واحدة، يجب المرور على كل حرف بحلقة)، وتُرجعان نفس الحرف دون تغيير لو لم يكن أبجديًا أصلًا.

الصياغة

int isalpha(int c);
int isdigit(int c);
int isspace(int c);
int toupper(int c);
int tolower(int c);

📄 مثال

#include <ctype.h>

char c = 'a';
if (isalpha(c)) {
    char upper = toupper(c);   // 'A'
    printf("%c\n", upper);
}

if (isdigit('7')) printf("رقم صحيح\n");

أهم النقاط

العنصرالوظيفة
isalphaهل الحرف أبجدي (A-Z أو a-z)
isdigitهل الحرف رقم عشري (0-9)
isalnumهل الحرف أبجدي أو رقمي
isspaceهل الحرف فراغ (مسافة، تاب، سطر جديد...)
toupper / tolowerتحويل حرف أبجدي واحد لحالة كبيرة/صغيرة

💡 نصائح عملية

  • مرّر كل حرف من النص عبر حلقة واحدًا واحدًا — هذه الدوال تعمل على حرف مفرد فقط
  • استخدم isdigit للتحقق من صحة مدخل رقمي قبل تمريره لـ atoi أو strtol

⚠️ أخطاء شائعة

  • توقّع أن toupper تحوّل نصًا كاملًا مباشرة دون حلقة
  • تمرير char سالب القيمة (بترميزات معيّنة) مباشرة دون تحويله لـ unsigned char أولًا — سلوك غير معرّف حسب المعيار

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار C الكامل بالعربي.