Вставка символов в указанной позиции

Я хочу сделать программу, когда пользователь вводит 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

Решение

Одна вещь, которую я замечаю, состоит в том, что если ваш цикл когда-либо действительно выполняется, он будет бесконечным

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

Другие решения

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