Копирование с пределом в C++
Копирование с пределом переносит не больше заданного числа байт из источника в массив-приемник.
Функция strncpy из <cstring>
может обрезать текст: если лимит меньше длины
строки, '\0' в конце приемника не
гарантирован. Безопасный прием - буфер с запасом
и ручная установка нуля после копирования.
Запишем массив, скопируем с лимитом и закроем
строку:
#include <cstring>
#include <iostream>
char dest[16];
std::strncpy(dest, "longword", 4);
dest[4] = '\0';
std::cout << dest << "\n";
Когда лимит не меньше длины источника, нуль попадает в массив вместе с текстом. Покажем полное копирование короткого слова:
#include <cstring>
#include <iostream>
char slot[12];
std::strncpy(slot, "go", 12);
std::cout << slot << "\n";
Объявите char part[10]. Скопируйте из
"abcdef" не более 3 символов
функцией std::strncpy, поставьте
'\0' в part[3] и выведите
part.