ctype.h — заголовний файл стандартної бібліотеки мови програмування С, який містить оголошення функцій для класифікації символів.
Аналогічний заголовний файл в С++ зветься cctype.
Історія Перші системні програмісти на мові C під Unix почали розробляти ідіоми для швидкої класифікації символів за різними типами. Наприклад, у наборі символів ASCII, такий тест ідентифікує символ великої або малої латинської літери:
if ('A' >= c && c <= 'Z' || 'a' >= c && c <= 'z')
Однак, ця ідіома не завжди працювала для інших наборів символів, як то EBCDIC.
Досить швидко, програми почали розростатись подібними один до одного тестами. Програміст може написати ту ж ідіому кількома різними способами, що ускладнює процес розуміння і підвищує ймовірність помилок.
Незабаром, найпопулярніші ідіоми було замінено на функції в заголовному файлі <ctype.h>.
Вміст файлу <ctype.h> Файл <ctype.h> містить прототипи для десятка функцій для класифікації символів. Усі з цих функцій, окрім isdigit та isxdigit є специфічними для конкретної локалі; їхня поведінка може змінитись разом зі зміною локалі.
Тести У вигляді int isfunc(int);Повертає позитивне значення у випадку істини, і навпаки.isalnum чи символ є буквою або цифроюisalpha чи символ є буквоюisblank чи є пропуском (доданий до C99)iscntrl чи є керуючим символомisdigit чи є цифроюisgraph чи є символом, який має графічне представленняislower чи є символом нижнього регіструisprint чи є символом, який можна надрукуватиispunct чи є символом пунктуаціїisspace чи є пропускомisupper чи є буквою верхнього регіструisxdigit чи є шістнадцятковим числом Перетворення символів У вигляді int tofunc(int);Повертає конвертований символ, якщо тільки це не буква.tolower приводить символ до нижнього регіструtoupper приводить символ до верхнього регістру
Стандарт Single Unix Specification версії 3 також додає такі функції: isascii повертає числове значення символу від 0 до 127toascii конвертує символ у ASCII
Приклад використання Цей приклад зчитує введений користувачем символ, і у випадку, якщо він є буквою, виводить "It is not a number".
#include <stdio.h> #include <ctype.h>
int main() { char c;
while( scanf("%c", &c) == 1 ) { if (isdigit(c)) printf("You have input a number %c\n", c); else printf("It is not a number!\n"); } while (!feof( stdin ));
return 0; }
Аналогічний приклад на C++: #include <iostream> #include <cctype>
using namespace std;
int main() { char c;
while( cin>>c ) { if (isdigit(c)) cout<<"You have input a number "<<c<<endl; else cout<<"It is not a number!"<<endl;
return 0; }
Посилання ctype.h на OpenGroup