Библиотека обработки символов — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Библиотека обработки символов

2020-05-08 169
Библиотека обработки символов 0.00 из 5.00 0 оценок
Заказать работу

Библиотека обработки символов включает в себя несколько функций, каждая функция получает в качестве аргумента символ — представляемый типом int — или индикатор EOF (конец файла). Операции с символами часто выполняются как с целыми числами, поскольку символ в С это однобайтовое целое. На рис. 1 приведен перечень функций библиотеки обработки символов.

 

 Прототип Описание функции
int isdigit (int с) Возвращает значение true, если с является цифрой, и 0 (false) в других случаях.
int isalpha (int c) Возвращает значение true, если с является буквой, и 0 в других случаях.
int isalnum (int c) Возвращает значение true, если с является цифрой или буквой, и 0 в других случаях.
int isxdigit (int c) Возвращает значение true, если с является одним из символов шестнадцатеричного формата, и 0 в других случаях.
int islower (int c) Возвращает значение true, если с является буквой нижнего регистра, и 0 в других случаях.
int isupper (int c) Возвращает значение true, если с является буквой верхнего регистра, и 0 в других случаях.
int tolower (int c) Если с является буквой верхнего регистра, то tolower возвращает с как букву нижнего регистра. В других случаях tolower возвращает аргумент без изменений.
int toupper (int c) Если с является буквой нижнего регистра, то toupper возвращает с как букву верхнего регистра. В других случаях toupper возвращает аргумент без изменений.
int isspace (int c) Возвращает значение true, если с является пробельным символом -пробел (' '), новая страница (\f), новая строка (\n), возврат каретки (\r), горизонтальная табуляция (\t) или вертикальная табуляция (\v), - и 0 в других случаях.
int iscntrl (int c) Возвращает значение true, если с является управляющим символом, и 0 в других случаях.
int ispunct (int c) Возвращает значение true, если с является отображаемым при печати символом, но не относится к пробельным символам, цифрам или буквам. В других случаях функция возвращает значение 0.
int isprint (int c) Возвращает значение true, если с является отображаемым при печати символом, включая символ пробела (‘ ‘), и 0 в других случаях.
int isgraph (int c) Возвращает значение true, если с является отображаемым при печати символом, исключая символ пробела (‘ ‘), и 0 в других случаях.

Рис. 1. Перечень функций библиотеки обработки символов

Для работы с функциями библиотеки обработки символов, необходимо подключить заголовочный файл < ctype. h >.

Программа, приведенная на рис. 2, демонстрирует применение функций isdigit, isalpha, isalnum и isxdigi t. Функция isdigit определяет, является ли ее аргумент цифрой (0-9). Функция isalpha определяет, попадает ли ее аргумент в список букв верхнего (A-Z) или нижнего (a-z) регистров. Функция isalnum определяет принадлежность аргумента буквам верхнего и нижнего регистров или цифрам. Функция isxdigit определяет, является ли аргумент шест-надцатеричной цифрой (A-F, a-f, 0-9).

 

/* Применение функций isdigit, isalpha, isalnum и isxdigit */

#include <stdio.h>

#include <ctype.h>

main (){

printf ("%s\n%s%s\n%s%s\n\n", "According to isdigit: ", isdigit('8')? "8 is a ": "8 is not a ", "digit", isdigit('#')?"# is a ": "# is not a ", "digit"); printf("%s\n%s%s\n%s%s\n%s%s\n%s%s\n\n", "According to isalpha:", isalpha('A')? "A is a "

: "A is not a ", "letter", isalpha('b')? "b is a ": "b is not a ", "letter", isalpha ('&')? "& is a ": "& is not a ", "letter", isalpha ('4')? "4 is a ": "4 is not a ", "letter");

printf ("%s\n%s%s\n%s%s\n%s%s\n\n", "According to isalnum:",

isalnum('A')? "A is a ": "A is not a ", "digit or a letter",

isalnum('8')? "8 is a ": "8 is not a ",

"digit or a letter", isalnum('#')? "# is a ": "# is not a ", "digit or a letter"); printf ("%s\n%s%s\n%s%s\n%s%s\n%s%s\n%s%s\n", "According to isxdigit:", isxdigit (' F')? "F is a ": "F is not a ", "hexadecimal digit",

isxdigit('J')? "J is a ": "J is not a ",

"hexadecimal digit", isxdigit ('7')? "7 is a ": "7 is not a ",

"hexadecimal digit", isxdigit ('$')? "$ is a ": "$ is not a ",

"hexadecimal digit",isxdigit('f')? "f is a ": "f is not a ",  "hexadecimal digit");

return 0; }

 

Вывод на экран

According to isdigit: 8 is a digit

# is not a digit

According to isalpha:

A is a letter

b is a letter

& is not a letter;,

4 is not a letter

According to isalnum:

A is a digit or a letter

8 is a digit or a letter

# is not a digit or a letter

According to isxdigit:

F is a hexadecimal digit

J is not a hexadecimal digit

7 is a hexadecimal digit

$ is not a hexadecimal digit

f is a hexadecimal digit

Рис. 2. Применение isdigit, isalpha, isalnum, isxdigit

 

Программа рис. 2 использует с каждой функцией условную операцию (?:), чтобы определить, какую из строк «is а» (это) или «is not a» (это не) следует вывести на печать для каждого проверяемого символа. Например выражение

isdigit ('8')? "8 is a": "8 is not a" означает, что если '8' является цифрой, т.е. функция isdigit возвращает новое значение (ненулевое), то печатается строка «8 is а», и, если '8' не является цифрой, т.е. isdigit возвращает 0, печатается строка «8 is not a».

Программа, приведенная на рис. 3, демонстрирует применение функций islower, isupper, tolower и toupper. Функция islower определяет, является ли ее аргумент буквой нижнего регистра (а—z). Функция isupper определит является ли ее аргумент буквой верхнего регистра (A—Z). Функция tolower образует регистр буквы из верхнего в нижний и возвращает букву нижнего регистра. Если аргумент не является буквой верхнего регистра, то функция tolower возвращает аргумент без изменений. Функция toupper преобразует регистр буквы из нижнего в верхний и возвращает букву верхнего регистре. Если аргумент не является буквой нижнего регистра, то функция toupper возвращает аргумент без изменений.

/* Применение функций islower, isupper, tolower, toupper */

#include <stdio.h>

#include <ctype.h>

main () {

printf("%s\n%s%s\n%s%s\n%s%s\n%s%s\n\n",

"According to islower:",

islower ('P')? "P is a ": P is not a ",

"lowercase letter",

islower ('p')? "p is a ": "p is not a ",

"lowercase letter",

islower ('5')? "5 is a ": "5 is not a ",

"lowercase letter",

islower ('!')? "! is a ": "! is-not a ",

"lowercase letter"); printf ("%s\n%s%s\n%s%s\n%s%s\n%s%s\n\n",

"According to isupper:",

isupper ('d')? "D is a ": "D is not an ",

"uppercase letter",

isupper ('d')? "d is a ": "d is not an ",

"uppercase letter",

isupper ('8')? "8 is a ": "8 is not an ",

"uppercase letter",

isupper ('$')? "5 is a ": "$ is not an ",

"uppercase letter"); printf("%s%c\n%s%c\n%s%c\n%s%c\n",

"u converted to uppercase is ", toupper ('u'),

"7 converted to uppercase is ", toupper ('7'),

"$ converted to uppercase is ", toupper ('$'),

"L converted to lowercase is ", tolower ('L')); return 0; }

 

Вывод на экран

According to islower:

P is not a lowercase letter

p is a lowercase letter

5 is not a lowercase letter

! is not a lowercase letter

According to isupper:

D is an uppercase letter

d is not an uppercase letter

8 is not an uppercase letter

$ is not an uppercase letter

u converted             to uppercase is U

7 converted             to uppercase is 7

$ converted             to uppercase is $

L converted to lowercase    is 1

Рис. 3. Применение islower, isupper, tolower, toupper

Рис. 4 иллюстрирует применение функций isspace, iscntrl, ispunct, isprint и isgraph. Функция isspace определяет принадлежность аргумента следующему списку пробельных символов: пробел (' '), новая страница (‘\f’), новая строка (‘\n’), возврат каретки ('\r'), горизонтальная табуляция ('\t'), вертикальная табуляция ('\v'). Функция iscntrl определяет принадлежность аргумента следующему списку управляющих символов: горизонтальная табуляция ('\t'), вертикальная табуляция ('\v'), новая страница (‘\f’), звуковой сигнал (‘\а’), возврат на один символ ('\b'), возврат каретки ('\r')> новая строка ('\n’). Функция ispunct определяет, является ли аргумент знаком пунктуации или специальным символом, не относящимся к цифрам, буквам или пробелам, например, $, #, (), >, [], {},;,:, % и т.д. Функция isprint определяет, можно ли отобразить данный символ на экране (включая символ пробела). Функция isgraph работает так же, как и isprint, но из списка символов исключен символ пробела.

/* Применение функций isspace, iscntrl, ispunct, isprint,

isgraph */

#include <stdio.h>

#include <ctype.h>

main () {

printf("%s\n%s%%s%s\n%s%s%s\n%s%s\n\n",

"According to isspace:",

"Newline", isspace ('\n')? " is a ": " is not a ",

"whitespace character", "Horizontal tab",

isspace ('\t')? " is a ": " is not a ",

"whitespace character",

isspace ('%')? "% is a ": "% is not a ",

   "whitespace character"); printf ("%s\n%s%s%s\n%s%s\n\n", "According to iscntrl:",

"Newline", iscntrl ('\n')? " is a ": " is not a ",

"control character",

iscntrl ('$')? "$ is a ": "$ is not a ",

"control character");

printf ("%s\n%s%s\n%s%s\n%s%s\n\n", "According to ispunct:",

ispunct (';')? "; is a ": "; is not a ",

"punctuation character",

ispunct ('Y')? "Y is a ": "Y is not a ",

"punctuation character",

ispunct ('#')? "# is a ": "# is not a '",

   "punctuation character"); printf ("%s\n%s%s\n%s%s%s\n\n", "According to isprint:",

isprint ('$')?"$ is a ": "$ is not a ",

"printing character"

"Alert", isprint ('\a')? " is a ": " is not a ",

   "printing character"); printf ("%s\n%s%s\n%s%s%s\n", "According to isgraph:",

isgraph ('Q')? "Q is a ": "Q is not a ",

"printing character other than a space",

"Space", isgraph(' ')? " is a ": "is not a ",

   "printing character other than a space"); return 0; }

 

Вывод на экран

According to isspace:

 Newline is a whitespace character

Horizontal tab is a whitespace character

 % is not a whitespace character

According to iscntrl:

Newline is a control character $ is not a control character

. According to ispunct:

; is a punctuation character

Y is not a punctuation character

# is a punctuation character

According to isprint:

$ is a printing character

Alert is not a printing character

According to isgraph:

Q is a printing character other than a space

Space is not a printing character other than a space

Рис. 4. Применение isspace, iscntrl, ispunct, isprint, isgraph

 

3. Функции преобразования строк

Эти функции расположены в библиотеки утилит общего назначения (stdlib) и преобразуют строки цифр в целые значения и значения с плавающей точкой. На рис. 5 приведен перечень функций преобразования строк. Обратите внимание на модификатор const в описании переменной nPtr в заголовке функции (читается справа налево: «nPtr является указателем на символьную константу»); const объявляет, что значение аргумента не будет изменяться.

 

Прототип Описание функции
double atof (const char *nPtr) Преобразует строку nPtr в тип double.
lint atoi (const char *nPtr) Преобразует строку nPtr в тип int.
long atol (const char *nPtr) Преобразует строку nPtr в тип long int.
double strtod (const char *nPtr, char **endPtr) Преобразует строку nPtr в тип double.
long strtol (const char *nPtr, char **endPtr, int base) Преобразует строку nPtr в тип long.
unsigned long strtoul (const char *nPtr, char **endPtr, int base) Преобразует строку nPtr в тип unsigned long.

Рис. 5. Перечень функций преобразования строк


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.052 с.