【发布时间】:2019-04-06 20:57:24
【问题描述】:
我的目标是生成一个具有正确数量点的新数组,并将一个旧字符数组复制到其中。
使用 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);
【问题讨论】: