奇怪的编译警告提示,运行时奇怪错误
代码如下
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
const char *p1="love";
const char *p2="forever";
size_t size_arr=strlen(p1)+strlen(p2);
char *result_str=new char[size_arr+1];
strcpy(result_str,p1);
strcat(result_str,p2);
cout<<*result_str<<endl;
delete [] result_str;
return 0;
}
应该没什么错误吧
然后编译时的提示就是
1>------ 已启动生成: 项目: test, 配置: Debug Win32 ------
1>正在编译...
1>test.cpp
1>c:\documents and settings\lican\my documents\visual studio 2005\projects\test\test.cpp\test.cpp(10) : warning C4996: “strcpy”被声明为否决的
1> e:\vs2005\vc\include\string.h(73) : 参见“strcpy”的声明
1> 消息:“This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
1>c:\documents and settings\lican\my documents\visual studio 2005\projects\test\test.cpp\test.cpp(11) : warning C4996: “strcat”被声明为否决的
1> e:\vs2005\vc\include\string.h(78) : 参见“strcat”的声明
1> 消息:“This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.”
1>正在编译资源清单...
1>正在链接...
1>正在嵌入清单...
1>生成日志保存在“file://c:\Documents and Settings\LiCan\My Documents\Visual Studio 2005\Projects\test\test\Debug\BuildLog.htm”
1>test - 0 个错误,2 个警告
========== 生成: 1 已成功, 0 已失败, 0 最新, 0 已跳过 ==========
运行的时候只出现一个l字符,显然不符合预期
请高手解释是怎么回事