Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
21
Добавлен:
30.05.2020
Размер:
428.13 Кб
Скачать

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

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

#include <string.h> #include <mem.h>

прототип

описание функции

void *memccpy (void *dest, const void

копирует блок памяти из буфера-источника src в

*src, int c, size_t n)

буфер dest, пока общее число перенесенных байтов

 

не достигнет значения n или пока не встретится в src

 

байт, содержащий символ c

void *memchr (const void *s, int c,

возвращает указатель на символ c, найденный при

size_t n)

просмотре n байтов буфера s; если символ не найден,

 

возвращается NULL

int memcmp (const void *s1, const void

сравнивает n первых байтов буферов s1 и s2 (байты

*s2, size_t n)

трактуются как символы); возвращает значение, меньшее

 

нуля, если s1 < s2; равное нулю, если s1= s2; большее

 

нуля, если s1 > s2

int memicmp (const void *s1, const

сравнивает n первых байтов буферов s1 и s2 (байты

void *s2, size_t n)

трактуются как символы, преобразованные в строчные буквы);

 

возвращает значение, меньшее нуля, если s1 < s2;

 

равное нулю, если s1= s2; большее нуля, если s1 > s2

void *memcpy (void *dest, const void

копирует n байтов из буфера-источника src в буфер-

*src, size_t n)

назначение dest; буферы не должны перекрываться в

 

памяти; возвращает указатель на dest

void *memmove (void *dest, const void

копирует n байтов из буфера-источника src в буфер-

*src, size_t n)

назначение dest; буферы могут перекрываться в

 

памяти; возвращает указатель на dest

void *memset (void *s, int c, size_t n)

устанавливает n байтов буфера s в заданное значение

 

c; возвращается указатель на буфер s

Динамические строки

Память под строки, как и под другие массивы, может выделяться как компилятором, так и непосредственно в программе. Как мы видели, длина статической строки должна быть только константным выражением. Чаще всего она задается именованной константой

(как частным случаем константного выражения). Длина динамической строки может задаваться выражением, вычисляемым в ходе выполнения программы.

Для размещения строки в динамической памяти описываем указатель на char и выделяем память с помощью new или malloc.

char *p = new char [m];

char *q = (char *) malloc(m*sizeof(char));

Динамические строки, как и другие динамические массивы, нельзя инициализировать при создании.

Копирование строки в динамическую строку

При копировании строки в динамическую строку необходимо правильно выделять для неё память:

#include <string.h>

int main()

Программирование – лекция 13 (лекции Стрикелевой Л.В.)

24

 

Соседние файлы в папке Лабораторні роботи