Функция strncpy() производит копирование строки (включая завершающий строку нулевой символ) в другую строку с ограничением длины копируемой строки.
#include <string.h> // strcpy()
char *strncpy (char *dst, const char *src, size_t n);
dst - Буфер куда копируется строка, должен быть создан размером, как минимум n + 1
src - Копируемая строка
n - Максимальное количество копируемых символов - либо до нулевого символа завершения строки
Возвращает указатель на dst
Когда строка dst была инициализирована строкой (не нулями), но была достаточной длины - наблюдался вылет программы с ошибкой сегментации..
#include <stdio.h> // printf()
#include <string.h> // strncpy()
int main(){
char dst[50] = {0}; // Строка для приема текста инициализирована нулями
const char *src = "Hi Victor!"; // Строка для копирования
strncpy(dst, src, 6); // Копируем содержимое src в dst с ограничением в 6 копируемых символов
printf("%s \n", dst); // "Hi Vic" Cкопировано 6 символов
strncpy(dst, src, 50); // Копируем содержимое src в dst с ограничением в 50 копируемых символов
printf("%s \n", dst); // "Hi Victor!" Cкопировано до завершающего нуля в src
}
Вывод программы:
Hi Vic Hi Victor!