Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции программирование.doc
Скачиваний:
38
Добавлен:
05.11.2018
Размер:
4.73 Mб
Скачать

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

Как правило, в процессе обработки строк в соответствующие функции передаются не сами строки, а их адреса, т. к. копирование одного адреса более эффективно, чем копирование всей строки.

Например, фрагмент программы

char *st = “Компьютер”,

*st1;

st1 = st;

puts( st1 );

показывает, как с использованием указателя st1, вывести исходную строку, на которую указывает st. При этом копируется не сама строка, а её адрес. Схема распределения оперативной памяти имеет вид

&

К

о

м

п

ь

ю

т

е

р

\0

&

&

st

st1

Адрес строки (обозначенный на схеме как &) при инициализации строки записывается в ячейку указателя st. Оператор st1 = st; копирует значение этого адреса в ячейку указателя st1.

Однако, в случае, когда требуется сохранить копию строки и изменить оригинал, такой способ не подходит, т. к. указатели st и st1 указывают на одну и ту же строку.

Для создания копии строки необходимо использовать функцию strcpy( ).

Функция strcpy( ) копирует одну строку в другую. Прототип функциии имеет следующую структуру:

char *strcpy(char *s1, char *s2);

где в качестве двух аргументов используются указатели s1, s2 на символьные строки.

Строка, на которую указывает указатель s2 (второй аргумент), посимвольно копируется в символьный массив, на который указывает указатель s1 (первый аргумент). В качестве второго аргумента может использоваться указатель на копируемую строку (адрес символьного массива, содержащего строку) или строковая константа.

Функция возвращает указатель на скопированную строку.