ctype.h

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;
}

Джерела

    Посилання

    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.