繁体   English   中英

一个简单的C ++程序崩溃?

[英]a simple c++ program crashes?

编写一个程序,要求用户输入他或她的名字,然后输入姓氏,然后构造,存储并显示第三个字符串,该字符串由用户的姓氏,逗号,空格和名字组成。使用cstring头文件中的char数组和函数。运行示例如下所示:输入您的名字:Flip输入您的姓氏:Fleming这是单个字符串中的信息:Fleming,Flip

int main()
{

    char * fName,*lName,*fullName;

    fName = new char;
    cin.getline(fName,100);

    lName=new char;
    cin.getline(lName,100);

    fullName=new char[strlen(lName)+strlen(fName)+3];

    strncpy(fullName,lName,strlen(lName));

    fullName[strlen(lName)]=',';
    fullName[strlen(lName)+1]=' ';


    char* dummy=(char*)fullName[strlen(lName)+2];//making a pointer to the char after the ' ' char to start copying the first name

    strncpy(dummy,fName,strlen(fName));

    dummy[strlen(fName)+strlen(lName)+2]='\0';

    cout<<endl<<endl<<dummy<<endl;



    delete fullName;
    delete lName;
    delete fName;
    return 0;
}

为什么当我指向数组中间的一个char并开始复制时会崩溃?

fName = new char;

分配一个字符。

cin.getline(fName,100);

远远超过了。

使用std::string代替。 您会看到,用C ++而不是C编写C ++代码使工作变得更加轻松。

fullName[strlen(lName)+2]为char,要获取指针,请执行以下操作:

char* dummy=fullName + strlen(lName)+2;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM