Ctype.h
Заголовні файли C |
---|
|
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; }
Посилання
- ctype.h [Архівовано 25 січня 2009 у Wayback Machine.] на OpenGroup