我只是想复制“临时”中的内容。进入' p'但程序在strcopy_s行崩溃。我错过了一些重要规则吗?
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main() {
char temp[100] = "Coolbeans";
int len = strlen(temp);
char* p = new char[len+1];
strcpy_s(p, len, temp);
for (int i = 0; i < len; i++)
cout << p[i] << endl;
for (int i = 0; i < len; i++)
cout << temp[i] << endl;
}
答案 0 :(得分:1)
Praetorian击中头部。 “你缺少的重要规则是使用std::string
”。像strcpy_s
这样的旧C函数众所周知地令人难以置信地不可靠,这就是不再这样做的重点。所以不要这样做。使用std::string
。
答案 1 :(得分:0)
上面的代码片段导致“Debug Assertion failed”运行时错误。
strcpy_s(p, len, temp); //Expression:(L"Buffer is too small" &&0)
所以答案是strcpy_s(p,len + 1,temp);在你的情况下会很好。