开发者社区> 问答> 正文

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

展开
收起
爱吃鱼的程序员 2020-06-23 13:46:57 1219 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

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

    或者换vc++2010或者以上

    2020-06-23 13:47:15
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载