Описание Библиотеки Си

       

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


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

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

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

Для копирования буферов, для присваивания каждому байту в пределах указанного буфера заданного значения и для сравнения содержимого двух буферов предназначены следующие функции:

Функция

Краткое описание

memccpy

копирует символы из одного буфера в другой до тех пор, пока не будет скопирован заданный символ или не будет скопировано определенное число символов

memchr

возвращает указатель на первое вхождение заданного символа в буфере

memcmp

сравнивает указанное число символов из двух буферов

memlcmp

сравнивает указанное число символов двух буферов, считая строчные и прописные буквы эквивалентными

memcpy

копирует указанное количество символов из одного буфера в другой

memset

инициализирует заданным значением указанное количество байтов в буфере

movedata

копирует определенное количество символов из одного буфера в другой, даже когда буфера находятся в разных сегментах

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

Система программирования ТС

предоставляет дополнительно следующие функции для работы с буферами:

Функция

Краткое описание

memove

копирует указанное количество символов из одного буфера в другой

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

инвертировать (перевернуть) строку

strset

установить все символы строки в заданное значение

strspn

найти первую подстроку из заданного набора символов в строке

strstr

найти первую подстановку одной строки (более короткой) в другой

strtok

найти следующую точку в строке

strupr

преобразовать строку в верхний регистр (заглавные буквы)

Кроме того, система программирования MSC предоставляет дополнительно функцию strcmpi (идентична функции stricmp), а система программирования ТС предоставляет функцию stpcpy (идентична функции strcpy, но возвращает в точку вызова другое значение).

Прототипы всех функций работы со строками содержатся в файле string.h. Все функции работают со строками, завершающимися нулевым байтом ('\0'). Для работы с массивом символов, не имеющим в конце нулевого байта, вы можете использовать функции преобразования буферов, описанные выше.


Содержание раздела