Функция strncpy – копирование символов в строке
Функция strncpy в языке программирования С используется для копирования указанного количества символов из одной строки в другую. Она имеет следующий прототип:
char* strncpy(char* dest, const char* src, size_t n);
где:
- `dest` – указатель на строку, в которую будет скопирована исходная строка;
- `src` – указатель на исходную строку;
- `n` – максимальное количество символов, которые следует скопировать.
Функция возвращает указатель на строку `dest`.
При копировании строки с помощью `strncpy` существует риск переполнения буфера, если длина исходной строки превышает длину строки `dest`. Для избежания этого необходимо перед использованием функции `strncpy` убедиться, что размер строки `dest` достаточен для копирования.
Рассмотрим пример использования функции `strncpy`:
#include
#include
int main() {
char source[] = "Hello, world!";
char destination[6];
strncpy(destination, source, 5);
destination[5] = '\0';
printf("source: %s\n", source);
printf("destination: %s\n", destination);
return 0;
}
В данном примере переменная `source` хранит строку "Hello, world!", а переменная `destination` – строку из 5 символов. Мы копируем первые 5 символов из исходной строки в целевую строку с помощью функции `strncpy`, а затем добавляем нулевой символ в конец строки `destination` для обозначения конца строки. В результате на экране будет выведено:
source: Hello, world!
destination: Hello
Как видно из примера, функция `strncpy` скопировала только первые 5 символов строки `source`, что соответствует максимальному количеству символов, заданному в аргументе `n`. Если бы мы не добавили нулевой символ в конец строки `destination`, программа могла бы вывести случайные символы, находящиеся в памяти после строки `destination`.