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

一个简单的C++程序崩溃了?,c++,pointers,C++,Pointers,编写一个程序,要求用户输入自己的名字,然后输入姓氏 然后构造、存储和显示第三个字符串,包括 用户名,后跟逗号、空格和名字。使用字符数组和 cstring头文件中的函数。运行示例如下所示: 输入您的名字:Flip 输入您的姓:弗莱明 以下是单个字符串中的信息:Fleming,Flip int main() { char * fName,*lName,*fullName; fName = new char; cin.getline(fName,100); lNa

编写一个程序,要求用户输入自己的名字,然后输入姓氏 然后构造、存储和显示第三个字符串,包括 用户名,后跟逗号、空格和名字。使用字符数组和 cstring头文件中的函数。运行示例如下所示: 输入您的名字:Flip 输入您的姓:弗莱明 以下是单个字符串中的信息: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;
}
为什么当数组中的字符指向一个字符并开始复制???/p>
fName = new char;
分配一个字符

cin.getline(fName,100);
远远不止这些

改用std::string。你会发现C++中的C++代码代替了C,使得生命变得简单很多。

< P>全名[StLLNLNE+2 ]是char,得到指针:

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

我知道,但是它得到了整行,不能正确地得到它。崩溃是在得到2个输入之后发生的,它得到了正确的输入,然后复制lName,然后附加“,”+”,但是不能正确地复制fName!使用cstring头文件中的字符数组和函数。-分配完成后,立即切换到std::string。@user1609974不,不会。代码提供了未定义的行为。它似乎工作正常,因为你幸运与否,取决于你如何看待它。但它不正确,这就是它不起作用的原因。@user1609974根据需要分配尽可能多的字符。我会选择100个以上的字符。没有人会给你完整的工作代码,但是提示会让你达到目的。试着理解你在做什么。这是一个字符,但我铸造了它!这也行不通,还有其他解决办法吗?或者,即使你可以自己解决整个问题,也很简单:问题不是强制转换,要获得所需的地址,你需要做指针运算,而不是访问数组元素。