Для модификации содержимого символьных строк в прикладных программах наиболее часто применяется операция копирования. Полное или частичное копирование заданной строки символов обеспечивают функции strcpy и strncpy. Спецификации формата их вызова имеют вид:
char* strcpy (char* dest, const char* src);
char* strncpy(char* dest, const char* src, unsigned num);
Обе функции предназначены для копирования содержимого исходной строки, адресуемой указателем src, в массив символов, назначенный указателем dest. Функция strcpy обеспечивает полное копирование исходной строки, включая завершающий символ с кодом '\0'. Функция strncpy копирует не более, чем задано ее параметра num, начальных символов исходной строки. Когда значение параметра num превышает длину исходной строки, ее копию в назначенном массиве автоматически дополняет соответствующее число символов с нулевым кодом '\0', чтобы общее число символов, записанных в назначенный массив, стало равно num. Если, наоборот, исходная строка по длине больше или равна значению параметра num, то копия исходной строки в назначенном массиве не будет дополнена символом с нулевым кодом '\0'. Чтобы обеспечить корректность копирования, в функции strcpy и strncpy через указатель dest должен быть назначен массив, который имеет размер, достаточный для размещения всех символов копии исходной строки. При успешном завершении обе функции возвращают адрес полученной копии, то есть значение указателя dest.
Следующий фрагмент исходного кода демонстрирует использование функций strcpy и strncpy для инициализации и модификации содержимого массива символов в классе auto данными двух строковых констант:
char os[6];
strcpy (os, "Xenix");         /* инициализация os */
strncpy(os, "Mistake", 2);    /* модификация os */
В приведенном примере вызов функции strcpy инициализирует символьный массив os, образуя в нем строку "Xenix". Вызов функции strncpy заменяет первые два символа массива os началом строковой константы "Mistake", превращая "Xenix" в "Minix".