C++程序,关于strcpy_s使用报错(新手初学,虚心请教)

strcpy_s或是strcpy都尝试过,
前者报错 error C2065: 'strcpy_s' : undeclared identifier
后者报错 error C2660: 'strcpy' : function does not take 3 parameters
全程序

#include<iostream>
#include<cstring>
using namespace std;
class Name
{
    public:
        Name(char *pn);
        Name(const Name &Obj);
        ~Name();
        void setName(char*);
        void showName();
    protected:
        char *pName;
        int size;
};
Name::Name(char *pn)
{
    cout<<"Constructibng"<<pn<<endl;
    pName=new char[strlen(pn)+1];
    if(pName!=0)    strcpy_s(pName,strlen(pn)+1,pn);
    size=strlen(pn);
}
Name::Name(const Name& Obj)
{
    cout<<"Copying"<<Obj.pName<<"into its own block\n";
    pName=new char[strlen(Obj.pName)+1];
    if(pName!=0)    strcpy_s(pName,strlen(Obj.pName)+1,Obj.pName);
    size=Obj.size;
}
Name::~Name()
{
    cout<<"Destructing"<<pName<<endl;
    pName[0]='\0';
    delete  []pName;
    pName=NULL;
    size=0;
}
void Name::setName(char *pn)
{
    delete  []pName;
    pName=new char[strlen(pn)+1];
    if(pName!=0)    strcpy_s(pName,strlen(pn)+1,pn);
    size=strlen(pn);
}
void Name::showName()
{
    cout<<pName<<endl;
}
int main()
{
    Name Obj1("NoName");
    Name Obj2=Obj1;
    Obj1.showName();
    Obj2.showName();
    Obj1.setName("sudongpo");
    Obj2.setName("dufu");
    Obj1.showName();
    Obj2.showName();
}

使用软件为 Visual C++ 6.0

c++

1个回答

VC6.0不支持strcpy_s,
strcpy_s(pName,strlen(pn)+1,pn);
修改为
strcpy(pName,+1,pn);

或者换vc++ 2010或者以上

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 strcpy(pName,pn);
10 个月之前 回复
cCCwhite
cCCwhite 额,不好意思打扰了,按您的方法修改之后,依旧提示:error C2660: 'strcpy' : function does not take 3 parameters
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问