Моя цель - создать новый массив с правильным количеством точек и скопировать в него старый массив символов.
При использовании strcpy_s выдается исключение.Я не могу понять, почему выбрасывается исключение, в котором говорится, что буфер слишком мал.Я не могу использовать векторы или строки.Как я могу это исправить, используя массивы strcpy_s и char?
char str[4] = { 't', 'e', 's', 't' };
int allocated = 4;
char * reservedString = new char[allocated]();
strcpy_s(reservedString, allocated, str);
РЕДАКТИРОВАТЬ: изменение моего кода для добавления одного в массив дает мне то же исключение «слишком маленький буфер».
char str[4] = { 't', 'e', 's', 't' };
int allocated = 4;
char * reservedString = new char[allocated+1]();
strcpy_s(reservedString, allocated, str);
РЕДАКТИРОВАТЬ 2: Как кто-то прокомментировал, str должен быть установлен в 5 и иметь нулевой терминатор.Спасибо, это исправило мою проблему.
Обновленный код:
char str[5] = { 't', 'e', 's', 't', '\0'};
int allocated = 5;
char * reservedString = new char[allocated]();
strcpy_s(reservedString, allocated, str);