ctype.h
| Заголовні файли С |
ctype.h — заголовний файл стандартної бібліотеки мови програмування С, який містить оголошення функцій для класифікації символів.
Зміст |
Історія [ред.]
Перші системні програмісти на мові C під Unix почали розробляти ідіоми для швидкої класифікації символів по різним типам. Наприклад, у наборі символів ASCII, наступний тест ідентифікує символ ide:
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 |
Приклад використання [ред.]
Цей приклад зчитує введений користувачем символ, і у випадку, якщо він є буквою, повертає його числове значення у кодовій таблиці ASCII.
#include <stdio.h> #include <stdlib.h> #include <ctype.h> int main() { unsigned char c; do { scanf("%c", &c); if (isdigit(c)) printf("You have input a number %i", atoi(&c)); else printf("It is not a number!"); } while (c != EOF); return 0; }
