C++ 在指定位置插入字符

C++ 在指定位置插入字符,c++,arrays,char,shift,C++,Arrays,Char,Shift,我想制作一个程序,当用户输入AB1245并让程序将其更改为ab12345(在第2和第3个字符之间添加空格) char-Bilnr[9]; 对于(i=8;i3才能启动。工程如下: for (initialization; condition-that-has-to-be-true; optional-increment-decrement) { } 还要记住,C/C++数组从0开始计数,而不是从1开始计数 要修复完整的代码,请执行以下操作: char Bilnr[9] = "AB12345";

我想制作一个程序,当用户输入
AB1245
并让程序将其更改为
ab12345
(在第2和第3个字符之间添加空格)

char-Bilnr[9];
对于(i=8;i<3;i--){
Bilnr[i++]=Bilnr[i];
}
据我所知,该程序将从Bilnr[9]开始,并将其设置为Bilnr[8]的值

然后将Bilnr[8]设置为Bilnr[7]的值


但它不会移动任何值。它只打印
AB1245

此循环条件错误:

for (I=8; I<3; I--) {
    Bilnr[I++]=Bilnr[I];
}
此外,您必须将该位置替换为一个空格,否则将以“AB112345”结束:

Bilnr[2] = ' ';

我注意到的一件事是,如果你的循环真的执行过,它将是无限的

for (I=8; I<3; I--) {
    Bilnr[I++]=Bilnr[I];

}

它打印的是相同的,因为循环从未运行过。循环条件错误,应该是
I>3
才能启动。工程如下:

for (initialization; condition-that-has-to-be-true; optional-increment-decrement) {
}
还要记住,C/C++数组从0开始计数,而不是从1开始计数

要修复完整的代码,请执行以下操作:

char Bilnr[9] = "AB12345";

for (I=7; I>2; I--) {
    Bilnr[I]=Bilnr[I-1];
}
然后是
AB112345
。然后,您所需要的就是放在空间中:

Bilnr[2] = ' ';

只需使用
std::string
。它为您完成了繁重的工作。顺便说一句,您正在循环体中增加
I
,并在每次迭代中减少它。它永远不会达到2。你可能想要
Bilnr[I]=Bilnr[I-1]。当然,我们都知道“bilnr”的意思是“汽车登记号码”。-)谢谢克里斯,我现在明白了。“duh”;)欣赏它。修复它解决了先评估哪一个的问题。顺便说一句,这是定义好的行为吗?这让我想起了太多臭名昭著的
i=i++
@致命吉他,是的,我推迟了,因为它是想用
i+1
来代替。谢谢,这解决了它。我似乎认为for循环中的第二个参数是:do直到这是真的,而不是:do只要这是真的。在其他错误中。哈!谢谢大家,这是一个多么棒的社区和网站啊
Bilnr[9]
==
分段错误
谢谢,我确实有空格输入,但由于我的循环出现错误,我最终得到了“AB 2345”,尽管循环得到了很多答案,再次感谢!你是对的。但没关系,你无论如何都得把空间放进去。我更新了它,它只需要少运行一个周期。谢谢巴特,我的逻辑有很多问题,现在就解决了!好。我只希望你不要只是抄袭,还要理解:)。祝你学习编程好运!
for (initialization; condition-that-has-to-be-true; optional-increment-decrement) {
}
char Bilnr[9] = "AB12345";

for (I=7; I>2; I--) {
    Bilnr[I]=Bilnr[I-1];
}
Bilnr[2] = ' ';