ctype.h
ctype.h — заголовний файл стандартної бібліотеки мови програмування С, який містить оголошення функцій для класифікації символів.
| Заголовні файли C |
|---|
Аналогічний заголовний файл в С++ зветься 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;
}
Джерела
Посилання
- ctype.h на OpenGroup