我想创建一个程序,当用户输入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
。
答案 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] = ' ';