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