ctype.h
«کتابخانه ctype.h» برای «طبقه بندی کاراکتر (Character Classification)» و «تبدیل حروف (Case Conversion)» است. یعنی بفهمیم نویسه حرف است یا رقم، و سپس کوچک یا بزرگش کنیم. مثل نگهبان ورودی فرم که فقط اجازه درست می دهد.
تابع ها چه کار می کنند؟
این کتابخانه دو کار اصلی دارد: شناسایی نوع کاراکتر، و تبدیل کوچکی/بزرگی حروف. بنابراین ورودی ها تمیز و استاندارد می شوند.
- شناسایی:
isalpha()حرف،isdigit()رقم،isspace()فاصله،ispunct()نشانه گذاری. - تبدیل:
tolower()حروف را کوچک می کند،toupper()حروف را بزرگ می کند.
نکته: همه این توابع روی مقدار عددی کاراکتر کار می کنند و معمولاً ورودی شان unsigned char یا EOF است.
نمونه کد: پاک سازی ورودی با ctype.h
#include <stdio.h>
#include <ctype.h>
int main(void) {
int ch;
int letters = 0;
int digits = 0;
int spaces = 0;
printf("Enter text, then Ctrl+Z/Ctrl+D to end:\n");
while ((ch = getchar()) != EOF) {
if (isalpha(ch)) {
letters++;
ch = tolower(ch);
putchar(ch);
} else if (isdigit(ch)) {
digits++;
putchar(ch);
} else if (isspace(ch)) {
spaces++;
putchar(' ');
} else {
if (!ispunct(ch)) {
putchar(ch);
}
}
}
printf("\nLetters: %d\n", letters);
printf("Digits: %d\n", digits);
printf("Spaces: %d\n", spaces);
return 0;
}
تمرین گام به گام
- رشته ای با حروف و اعداد وارد کن.
- با
isalphaوisdigitشمارش انجام بده. - همه حروف را با
tolowerکوچک کن. - فاصله ها را یکنواخت با
isspaceمدیریت کن.
هشدار: برای کاراکترهای خارج از ASCII، رفتار وابسته به محیط است. سپس حواست به محلی سازی باشد.
پیوندهای داخلی مرتبط با کتابخانه ctype.h
برای کار با اعداد، به math.h سر بزن. همچنین زمان بندی را در time.h ببین.
جمع بندی سریع
- کتابخانه ctype.h نگهبان ورودی هاست.
is*ها فقط نوع را می سنجند.to*ها حروف را تبدیل می کنند.- ورودی ناامن را اول بررسی کن.