Функция strncpy
Функция strncpy копирует не более n символов из строки-источника в строку-приемник.
В первый параметр мы передаем указатель на строку-приемник, во второй - указатель на строку-источник,
а в третий - максимальное количество символов для копирования.
Если длина источника меньше n, то остаток приемника заполняется нулевыми символами.
Если длина источника больше или равна n, то нулевой символ в конец не добавляется.
Синтаксис
char* strncpy(char* destination, const char* source, size_t n);
Пример
Давайте скопируем 3 символа из строки "abcde" в буфер:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char source[] = "abcde";
char destination[10] = {};
strncpy(destination, source, 3);
cout << destination << endl;
return 0;
}
Результат выполнения кода:
"abc"
Пример
Давайте скопируем 10 символов из короткой строки "abc" в буфер
и посмотрим, чем заполнится остаток:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char source[] = "abc";
char destination[10];
strncpy(destination, source, 10);
for (int i = 0; i < 10; i++)
{
cout << (int)destination[i] << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
97 98 99 0 0 0 0 0 0 0
Пример
Давайте перезапишем начало уже существующей строки:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char destination[10] = "12345";
char source[] = "abc";
strncpy(destination, source, 3);
cout << destination << endl;
return 0;
}
Результат выполнения кода:
"abc45"