我想制作一个程序,当用户输入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
。
我注意到的一件事是,如果您的循环实际执行过,它将是无限的
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] = ' ';
这个循环条件是错误的:
for (I=8; I<3; I--) {
Bilnr[I++]=Bilnr[I];
}
I
永远不会小于 3,因此循环永远不会开始。你可能想要一个>
. 如果它确实开始了,你也会有一个无限循环,因为你有I++
and I--
。
你想要这样的东西:
for (I=7; I>1; I--) {
Bilnr[I+1]=Bilnr[I];
}
此外,您必须用空格替换该位置,否则您将得到“AB112345”:
Bilnr[2] = ' ';
它打印相同,因为循环永远不会运行。循环条件错误,应该是I>3
启动。for
循环的工作方式如下:
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] = ' ';