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.] на
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
ctype h zagolovnij fajl standartnoyi biblioteki movi programuvannya S yakij mistit ogoloshennya funkcij dlya klasifikaciyi simvoliv Analogichnij zagolovnij fajl v S zvetsya cctype IstoriyaPershi sistemni programisti na movi C pid Unix pochali rozroblyati idiomi dlya shvidkoyi klasifikaciyi simvoliv po riznim tipam Napriklad u nabori simvoliv ASCII nastupnij test identifikuye simvol velikoyi abo maloyi latinskoyi literi if A gt c amp amp c lt Z a gt c amp amp c lt z Odnak cya idioma ne zavzhdi pracyuvala dlya inshih naboriv simvoliv yak to EBCDIC Dosit shvidko programi pochali rozrostatis podibnimi odin do odnogo testami Programist mozhe napisati tu zh idiomu kilkoma riznimi sposobami sho uskladnyuye proces rozuminnya i pidvishuye jmovirnist pomilok Nezabarom najpopulyarnishi idiomi bulo zamineno na funkciyi u zagolovnomu fajli lt ctype h gt Vmist fajlu lt ctype h gt Fajl lt ctype h gt mistit prototipi dlya desyatka funkcij dlya klasifikaciyi simvoliv Usi z cih funkcij okrim isdigit ta isxdigit ye specifichnimi dlya konkretnoyi lokali yihnya povedinka mozhe zminitis razom zi zminoyu lokali Testi U viglyadi int isfunc int Povertaye pozitivne znachennya u vipadku istini i navpaki isalnum chi simvol ye bukvoyu abo cifroyu isalpha chi simvol ye bukvoyu isblank chi ye propuskom dodanij do C99 iscntrl chi ye keruyuchim simvolom isdigit chi ye cifroyu isgraph chi ye simvolom yakij maye grafichne predstavlennya islower chi ye simvolom nizhnogo registru isprint chi ye simvolom yakij mozhna nadrukuvati ispunct chi ye simvolom punktuaciyi isspace chi ye propuskom isupper chi ye bukvoyu verhnogo registru isxdigit chi ye shistnadcyatkovim chislom Peretvorennya simvoliv U viglyadi int tofunc int Povertaye konvertovanij simvol yaksho tilki ce ne bukva tolower privodit simvol do nizhnogo registru toupper privodit simvol do verhnogo registru Standart Single Unix Specification versiyi 3 takozh dodaye taki funkciyi isascii povertaye chislove znachennya simvolu vid 0 do 127 toascii konvertuye simvol u ASCIIPriklad vikoristannyaCej priklad zchituye vvedenij koristuvachem simvol i u vipadku yaksho vin ye bukvoyu vivodit It is not a number include lt stdio h gt include lt ctype h gt int main char c while scanf c amp 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 Analogichnij priklad na C include lt iostream gt include lt cctype gt using namespace std int main char c while cin gt gt c if isdigit c cout lt lt You have input a number lt lt c lt lt endl else cout lt lt It is not a number lt lt endl return 0 Posilannyactype h 25 sichnya 2009 u Wayback Machine na