我基本上试图在数组中的某个索引之后存储所有内容。代码崩溃。试图从字符数组中删除字符C
例如,我想存储一个声明为char name[10]
的名称。如果用户输入15
字符,它将忽略前五个字符并将其余字符存储在char数组中,但是,我的程序崩溃。
这是我的代码
char name[10];
cout<< "Starting position:" << endl;
cin >> startPos;
for(int i= startPos; i< startPos+10; i++)
{
cout << i << endl; // THIS WORKS
cout << i-startPos << endl; // THIS WORKS
name[i-startPos] = name[i]; // THIS CRASHES
}
例如,如果我的名字是McStevesonse
,我想程序只是存储一切从第三的位置,所以最终的结果是Stevesonse
我真的感谢它,如果有人可以帮助我解决这个崩溃。
感谢
来删除如果name被声明为name和startPos> 0, 10,所以'name [i]'将访问超出分配的空间。你发布的代码在这方面不是很清楚,因为你用文字描述了一半,而不是代码。 – Misch 2014-12-02 20:48:52
如何将用户输入的15个字符存储到'char name [10]'变量中?当你知道这个问题的答案时,你就会明白问题所在。不幸的是,你的程序的这部分不在你的问题中,所以我不能回答这个问题。但是,我可以告诉你,不可能将15个字符存储到10个“char”数组中,而不会导致“未定义的行为”,这往往会导致以后崩溃。 – 2014-12-02 20:53:20
您提供的代码似乎与您所问的问题无关。 '如果用户输入了15个字符......';我没有看到你的程序在任何地方要求用户的名字。请更改您的问题和/或包含[MCVE](http://stackoverflow.com/help/mcve)。 – Julian 2014-12-02 21:13:52