Для того, чтобы не было лишних элементов (т. е. экономнее тратится память) можно использовать следующее описание:
static char *[4];
Здесь длина каждой строки определяется конкретной строкой, которая инициализирует соответствующую строку массива.
Библиотека обработки символов. Библиотека обработки символов включает в себя несколько функций, выполняющих ряд полезных проверок и операций с символьными данными. Каждая функция получает в качестве аргумента символ – представляемый типом int – или индикатор EOF (конец файла). Для работы с функциями библиотеки обработки символов надо подключить заголовочный файл <ctype. h>. В таблице 2 приведен перечень функций библиотеки обработки символов.
Таблица 2 – Функции библиотеки обработки символов
Прототип | Описание функции |
int isdijit (int c) | Возвращает значение true, если с является цифрой, и 0 (false) в других случаях. |
int isalpha (int c) | Возвращает значение true, если с является буквой, и 0 в других случаях. |
int isalnum (int c) | Возвращает значение true, если с является цифрой или буквой, и 0 в других случаях. |
int isxdijit (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 в других случаях. |
Функции преобразования строк. Для работы с функциями преобразования строк необходимо подключить заголовочный файл <stdlib. h>. Эти функции преобразуют строки цифр в целые значения и значения с плавающей точкой. В таблице 3 приведен перечень функций преобразования строк.
Таблица 3 – Функции преобразования строк
Прототип | Описание функции |
double atof (const char *nPtr) | Преобразует строку nPtr в тип double. |
int 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. |
Функции стандартной библиотеки ввода/вывода. Стандартная библиотека ввода/вывода <stdio. h> также содержит несколько функций, которые предназначены для работы с символьными и строковыми данными. В таблице 4 приведен перечень функций ввода/вывода символов и строк из стандартной библиотеки ввода/вывода.
Таблица 4 – Символьные и строковые функции стандартной библиотеки ввода/вывода
Прототип | Описание функции |
int getchar (void) | Вводит следующий символ со стандартного устройства ввода и возвращает его в формате целого. |
char *gets (char *s) | Вводит символы со стандартного устройства ввода в массив s до тех пор, пока не встретит символ новой строки или индикатор конца файла. После этого к массиву добавляется ограничивающий символ NULL. |
int putchar (int c) | Печать символа, хранящегося в с. |
int puts (const char *s) | Печать строки s с последующим символом новая строка. |
Прототип | Описание функции |
int sprintf (char *s, const char *format, …) | Эквивалент функции printf за исключением того, что результат вывода запоминается в массиве s, а не отображается на экране. |
int sscanf (char *s, const char *format, …) | Эквивалент функции scanf за исключением того, что ввод осуществляется из массива s, а не с клавиатуры. |
Основная литература: 1осн[325-355], 2осн[371-405]
Дополнительная литература: 10доп[46-51], 11доп[13-16]
Контрольные вопросы:
1. Назовите различные способы определения строки?
2. Какие функции содержит стандартная библиотека ввода/вывода <stdio. h>?
3. Какой заголовочный файл необходимо подключить для работы с библиотекой преобразования строк?
4. Какой заголовочный файл необходимо подключить для работы с библиотекой обработки символов?
5. Какие функции используются для изменения регистров символа?
Тема 10. Функции операции над строками.
Функции операций над строками из библиотеки обработки строк. Библиотека обработки строк содержит множество полезных функций для выполнения операций со строковыми данными, для сравнения строк, для поиска символов и других строк в строке, для деления строки на лексемы (логические части) и определения строки. Для работы с библиотекой обработки строк необходимо подключить заголовочный файл <string. h>. Перечень этих функций приведен в таблице 5.
Таблица 5 – Функции из библиотеки обработки строк
Прототип | Описание функции |
char *strcpy(char *s1, const char *s2); | Копирует строку s2 в строку s1. Возвращает значение s1. Функция предполагает, что строка s1 имеет размер, достаточный для того, чтобы вместить содержимое строки s2. |
char *strncpy(char *s1, const char *s2, size_t n); | Копирует не более n символов из строки s2 в строку s1. Возвращает значение s1. |
char *strcat(char *s1, const char *s2); | Объединяет строку s2 со строкой s1. Первый символ строки s2 переписывает символ NULL строки s1. Возвращает значение s1. |
Прототип | Описание функции |
char *strncat(char *s1, const char *s2, size_t n); | Объединяет не более n символов строки s2 со строкой s1. Первый символ строки s2 переписывает символ NULL строки s1. Возвращает значение s1. |
Функции сравнения из библиотеки обработки строк. Прототипы функций и краткое описание каждой из них приведены в таблице 6.
Таблица 6 – Функции сравнения
Прототип | Описание функции |
int strcmp(const char *sl, const char *s2); | Сравнивает строку sl со строкой s2. Функция возвращает 0, значение меньше 0 или больше нуля, если sl соответственно равна, меньше или больше s2. |
int stricmp(const char *sl, const char *s2); | Сравнивает строку sl со строкой s2, не делая различия между символами в нижнем и верхнем регистре. Функция возвращает 0, значение меньше 0 или больше нуля, если sl соответственно равна, меньше или больше s2. |
int strncmp(const char *sl, const char *s2, size_t n); | Сравнивает до n символов строки sl со строкой s2. Функция возвращает 0, значение меньше 0 или больше нуля, если sl соответственно равна, меньше или больше s2. |
int strnicmp(const char *sl, const char *s2, size_t n); | Сравнивает до n символов строки sl со строкой s2, не делая различия между символами в нижнем и верхнем регистре. Функция возвращает 0, значение меньше 0 или больше нуля, если sl соответственно равна, меньше или больше s2. |
Функции поиска из библиотеки обработки строк. Прототипы функций и краткое описание каждой из них приведены в таблице 7.
Таблица 7 – Функции поиска
Прототип | Описание функции |
char *strchr(const char *s, int c) | Находит позицию первого вхождения символа с в строку s. Если с найден, то функция возвращает указатель на с в строке s. В противном случае возвращается указатель со значением NULL. |
char *strrchr(const char *s, int c) | Находит позицию последнего вхождения символа с в строку s. Если с найден, то функция возвращает указатель на с в строке s. В противном случае возвращается указатель со значением NULL. |
size_t strspn(const char *s1, const char *s2) | Определяет и возвращает длину начального сегмента строки s1, содержащего только те символы, которые входят в строку s2. |
size_t strcspn(const char *s1, const char *s2) | Определяет и возвращает длину начального сегмента строки s1, содержащего только те символы, которые не входят в строку s2. |
char *strpbrk(const char *s1, const char *s2) | Находит в строке s1 позицию первого вхождения любого из символов строки s2. Если символ из строки s2 найден, функция возвращает указатель на этот символ в строке s1. В противном случае возвращается указатель со значением NULL. |
Прототип | Описание функции |
char *strstr(const char *s1, const char *s2) | Находит позицию первого вхождения подстроки s2 в строку s1. Если подстрока найдена, то функция возвращает указатель подстроки в строке s1. В противном случае возвращается указатель со значением NULL. |
char *strtok(char *s1, const char *s2) | Последовательный вызов функции выполняет разбиение строки s1 на лексемы (логические части, такие как слова в текстовой строке), разделенные символами, содержащимися в строке s2. При первом вызове функция получает в качестве аргумента строку s1, а в последующих вызовах, чтобы продолжить разбиение той же самой строки, в качестве первого аргумента передается NULL. При каждом вызове возвращается указатель на текущую лексему строки s1. Если при очередном вызове функция находит, что лексем в строке не осталось, то возвращается NULL. |
Другие функции из библиотеки обработки строк. В таблице 8 приведены прототипы и краткое описание остальных функций из библиотеки обработки строк.
Таблица 8 – Другие функции из библиотеки обработки строк
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |


