Я хочу сделать программу, когда пользователь вводит 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] = ' ';
Он печатает то же самое, потому что цикл никогда не запускается. Неверное условие цикла, оно должно быть 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] = ' ';
Это условие цикла неверно:
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] = ' ';