НазадОглавлениеДалее

9.1. Работа с областями памяти и строками

В стандартной библиотеке есть специальная группа функций для обработки областей памяти, которые рассматриваются как последовательности байтов.

Если размер области, с которой необходимо работать, задается явно, будем называть такую область буфером.

Другое используемое понятие - строка. Отличие строки от буфера в том, что ее размер задается не явно, а определяется первым встретившимся при просмотре строки слева направо нулевым байтом (имеющим значение '\0'), причем считается, что этот нулевой байт также принадлежит строке.

Для копирования буферов, для присваивания каждому байту в пределах указанного буфера заданного значения и для сравнения содержимого двух буферов предназначены следующие функции:
ФункцияКраткое описание
memccpyкопирует символы из одного буфера в другой до тех пор, пока не будет скопирован заданный символ или не будет скопировано определенное число символов
memchrвозвращает указатель на первое вхождение заданного символа в буфере
memcmpсравнивает указанное число символов из двух буферов
memicmpсравнивает указанное число символов двух буферов, считая строчные и прописные буквы эквивалентными
memcpyкопирует указанное количество символов из одного буфера в другой
memsetинициализирует заданным значением указанное количество байтов в буфере
movedataкопирует определенное количество символов из одного буфера в другой, даже когда буфера находятся в разных сегментах

Прототипы перечисленных функций содержатся в файле memory.h (MSC) и в файлах mem.h и string.h (ТС).

Система программирования ТС предоставляет дополнительно следующие функции для работы с буферами:
ФункцияКраткое описание
memmoveкопирует указанное количество символов из одного буфера в другой
movmemкопирует указанное количество символов из одного буфера в другой
setmemинициализирует заданным значением указанное количество байтов в буфере

Прототипы функций memmove и movmem содержатся в файлах mem.h и string.h. Прототип функции setmem содержится в файле mem.h.

Для работы со строками существуют следующие библиотечные функции (ТС & MSC):
ФункцияКраткое описание
strcatкатенация (склеивание) строк
strchrнайти первое вхождение заданного символа в строке
strcmpсравнить две строки
strcpyкопировать одну строку в другую
strcspnнайти первое вхождение символа из заданного набора символов в строке
strdupдублирование строки
strerrorсформировать в строке сообщение об ошибке, состоящее из двух частей: системной диагностики и необязательного добавочного пользовательского сообщения
stricmpсравнить две строки, считая символы нижнего и верхнего регистров эквивалентными
strlenвычислить длину строки
strlwrпреобразовать строку в нижний регистр (прописные буквы)
strncatдобавить n символов в строку
strncmpсравнение n символов в двух строках
strncpyскопировать n символов из одной строки в другую
strnicmpсравнение n символов двух строк
strnsetустановить n символов в строке в заданное значение
strpbrkнайти первое вхождение любого символа из заданного набора в строке
strrchrнайти последнее вхождение заданного символа в строке
strrevинвертировать (перевернуть) строку
streetустановить все символы строки в заданное значение
strspnнайти первую подстроку из заданного набора символов в строке
strstrнайти первую подстановку одной строки (более короткой) в другой
strtokнайти следующую точку в строке
struprпреобразовать строку в верхний регистр (заглавные буквы)

Кроме того, система программирования MSC предоставляет дополнительно функцию
ФункцияКраткое описание
strcmpi(идентична функции stricmp)

а система программирования ТС предоставляет функцию
ФункцияКраткое описание
stpcpyидентична функции strcpy, но возвращает в точку вызова другое значение

Прототипы всех функций работы со строками содержатся в файле string.h.

Все функции работают со строками, завершающимися нулевым байтом ('\0').

Для работы с массивом символов, не имеющим в конце нулевого байта, вы можете использовать функции преобразования буферов, описанные выше.


НазадОглавлениеДалее