Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Оператор присваивания для строк не определен. Если с1 и с2 - символьные массивы, вы не сможете ско­пировать один в другой следующим образом:

с1 = с2; /*??? */

Этот оператор не компилируется. Но если с1 и с2 объявить как указатели типа char *, компилятор согла­сится с этим оператором, но вряд ли вы получите ожидаемый результат. Вместо копирования символов из од­ной строки в другую оператор с1 = с2 скопирует указатель с2 в указатель с1, перезаписав, таким образом, адрес в с1, потенциально потеряв информацию, адресуемую указателем.

Чтобы скопировать одну строку в другую, вместо использования оператора присваивания вызовите функ­цию копирования строк strcpy(). Для двух указателей с1 и с2 типа char * оператор

strcpy(c1, с2);

копирует символы, адресуемые указателем с2, в память, адресуемую указателем с1, включая завершающие ну­ли. И только на вас лежит ответственность за то, что принимающая строка будет иметь достаточно места для хранения копии.

Аналогичная функция strncpy() ограничивает количество копируемых символов. Если источник (source) и приемник (destination) являются указателями типа char • или символьными массивами, то оператор

strncpy(destination, source, 10);

скопирует до 10 символов из строки, адресуемой указателем source, в область памяти, адресуемую указателем destination. Если строка source имеет больше 10 символов, то результат усекается. Если же меньше - неис­пользуемые байты результата устанавливаются равными нулю.





Дата публикования: 2015-01-23; Прочитано: 313 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...