Next Previous Contents

4. Обработчики символов

Программы которве работтают с символами и строками часто должны классифицировать символ как букву, цифру, пробел, и так далее и выполнять операции замены регистра на символах. Функции в заголовочном файле "ctype.h" предусмотрены для этой цели.

Так как выбор стандарта и набора символов может изменять классификации специфических символьных кодов, все эти функции зависят от текущего стандарта. (Точнее, на них воздействует стандарт, в настоящее время выбранный для классификации символов LC_CTYPE; см. раздел 19.3 [Категории стандарта] )

4.1 Классификация символов

Этот раздел объясняет библиотечные функции для классификации символов. Например, isalpha - функция, чтобы проверить буквенный ли символ. Она имеет один аргумент, символ для проверки, и возвращает целое число отличное от нуля, если символ буквенный, и нуль иначе. Ее можно использовть примерно так:

      if (isalpha (c)) printf ("Символ \"%c\" является буквой.\n", c);
Каждая из функций в этом разделе проверяет на принадлежность специфическому классу символов; каждая имеет имя, начинающееся с 'is'. Каждая из них имеет один аргумент, который является проверяемым символом, и возвращает int, который обрабатывается как логическое значение. Символьный аргумент передан как int, и это может быть постоянное значение EOF вместо реального символа.

Атрибуты любого данного символа могут измениться между стандартами. См. Главу 19 [Стандарты], для уточнения информации относительно стандартов.

Эти функции объявлены в заголовочном файле "ctype.h".

int islower (int c) (функция)

Возвращает истину, если C - символ нижнего регистра.

int isupper (int c) (функция)

Возвращает истину, если C - символ верхнего регистра.

int isalpha (int c) (функция)

Возвращает истину, если C - буквенный символ (буква). Если islower или isupper - истина для символа, то isalpha - также истина.

В некоторых стандартах , могут иметься дополнительные символы, для которых isalpha является истинной, и которые не являются, ни строчными буквами, ни символами верхнего регистра. Но в стандарте "C", не имеется никаких таких дополнительных символов.

int isdigit (int c) (функция)

Возвращает истину, если C - десятичная цифра (от "0" до "9").

int isalnum (int c) (функция)

Возвращает истину, если C - алфавитно-цифровой символ (символ или цифра); другими словами, если или isalpha или isdigit - истина для символа, то isalnum - также истина.

int isxdigit (int c) (функция)

Возвращает истину, если C - шестнадцатеричная цифра. Шестнадцатеричные цифры включают нормальные десятичные цифры от "0" до "9" и символы от "А" до "F" и от "a" до "f".

int ispunct ( int c) (функция)

Возвращает истину, если C - символ пунктуации. Это означает любой символ печати, который не алфавитно-цифровой или пробел.

int isspace (int c) (функция)

Возвращает истину, если C - символ пропуска. В стандартном расположении, isspace возвращает истину только для стандартных символов пробела:

      " " пробел
      "\f" перевод страницы
      "\n" символ перевода строки
      "\r" возврат каретки
      "\t" горизонтальная метка табуляции
      "\v" вертикальная метка табуляции
int isblank (int c) (функция)

Возвращает истину, если C - знак пропуска; то есть пробел или метка табуляции. Эта функция - расширение GNU.

int isgraph (int c) (функция)

Возвращает истину, если C - графический символ; то есть символ, который имеет glyph, связанный с этим. Символы пропуска не рассматриваются как графические символы.

int isprint (int c) (функция)

Возвращает истину, если C - символ печати. Символы печати включают все графические символы, плюс пробел (" ").

int iscntrl (int c) (функция)

Возвращает истину, если C - управляющий символ (то есть символ, который не является символом печати).

int isascii (int c) (функция)

Возвращает истину, если C 7-битовое символьное значение без знака, которое вписываться в US/UK ASCII набор символов. Эта функция - BSD расширение и - также SVID расширение.

4.2 Замена регистра

Этот раздел объясняет библиотечные функции для выполнения преобразований типа замены регистра символаов. Например, toupper преобразовывает любой символ в верхний регистр если возможно. Если символ не может быть преобразован, toupper, возвращает его неизменным.

Эти функции берут один аргумент типа int, который является символом, чтобы преобразовывать, и возвратить преобразованный символ как int. Если преобразование не применимо данному аргументу, аргумент, возвращается неизмененным.

Примечание относительно совместимости: В до-ANSI диалектах C, вместо того, чтобы возвращать неизмененный аргумент, эти функции могут терпеть неудачу, когда аргумент не подит для преобразования. Таким образом для переносимости, Вы должны написать islower (c)? toupper (c): c) а не просто toupper (c).

Эти функции объявлены в заголовочном файле "ctype.h".

int tolower (int c) (функция)

Если C - символ верхнего регистра, tolower возвращает соответствующий символ нижнего регистра. C если - не символ верхнего регистра, C возвращается неизменным.

int toupper (int c) (функция)

Если С - символ нижнего регистра, tolower возвращает соответствующий символ верхнего регистра. Иначе C возвращается неизменным.

int toascii (int c) (функция)

Эта функция преобразовывает C в ASCII символ, очищая старшие биты. Эта функция - BSD расширение и - также SVID расширение.

int _tolower (int c) (функция)

Она идентична tolower, и предусматривает совместимость с SVID. См. раздел 1.2.4 [SVID].

int _toupper ( int c) (функция)

Она идентична toupper, и предусматривает совместимость с SVID.


Next Previous Contents