在指定位置插入字符

时间:2013-01-29 20:55:56

标签: c++ arrays char shift

我想创建一个程序,当用户输入AB1245并让程序将其更改为AB 12345时(第2个和第3个字符之间增加的空格)

char Bilnr[9];

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

}

据我所知,这个程序将从Bilnr [9]开始,并将其设置为Bilnr [8]的值。

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

但它并没有移动任何值。它只是打印AB1245

3 个答案:

答案 0 :(得分:4)

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

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

}

I++并不代表I+1,而是I = I+1

但是您的循环不会执行,因为当您使用I<3

初始化I时,您的条件I=8将从一开始就是假的

您也永远不会将I[2]设为' '

您还必须意识到数组从0开始,因此Bilnr[0] == 'A'

for(int i = 8; i > 2; i--)
{
    Bilnr[i] = Bilnr[i-1];
}
Bilnr[2] = ' ';

答案 1 :(得分:2)

此循环条件错误:

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

I永远不会少于3,所以循环永远不会开始。你可能想要一个>。如果它开始因为你有I++I--,你也会有一个无限循环。

你想要这样的东西:

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

此外,你必须用空格替换该位置,否则你最终会得到'AB112345':

Bilnr[2] = ' ';

答案 2 :(得分:2)

它打印相同,因为循环永远不会运行。循环条件错误,应该I>3开始。 for loop的工作原理如下:

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] = ' ';