注册 登录
编程论坛 C++教室

[求助]使用strcpy遇到的就问题。。。

alleks 发布于 2007-08-06 19:44, 1612 次点击
我在程序中使用了strcpy函数,虽然没有报错,但是出现警告:

1>.\1.cpp(14) : warning C4996: “strcpy”被声明为否决的

1> C:\Program Files\Microsoft Visual Studio 8\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.”

请问“被声明为否决的”是什么意思?
8 回复
#2
maoguoqing2007-08-06 21:29

莫非你声明了_UNICODE? 把程序贴出来大家看看嘛。

#3
alleks2007-08-07 00:15

程序很简单:
#include<iostream>
#include<cstring>

using namespace std;

int main()
{
char *sa="hello!";
int size=strlen(sa);
char *sb=new char[size+1];
strcpy(sb,sa);
delete [] sb;
return 0;
}

#4
maoguoqing2007-08-07 00:51
#include&lt;string&gt;
#5
alleks2007-08-07 02:49
我试过了,结果是一样的。。。。
还是出现同样的警告。。。
顺便问一下,这两个头文件有什么区别呢?
#6
圆圆的鸟蛋2007-08-07 07:48

我运行过你的代码,没有出现你说的那种情况阿!

#7
alleks2007-08-07 12:19
就在编译的时候会出现警告,可能是我们用的版本不一样吧,我用的是 Visual Studio 2005
#8
圆圆的鸟蛋2007-08-07 12:28

把sa声明为const试试。

#9
aipb20072007-08-07 12:54
在vs2005里,用c的函数,会被安全警告,这是编译器对安全性的考虑。
你用安全增进版本就可以了:

strcpy -----> strcpy_s
1