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 до 127
toascii конвертує символ у 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;
}

Посилання ред.