una insertar caracteres caracter cadena agregar c++ arrays char shift

c++ - cadena - Insertar caracteres en la posición especificada



agregar un caracter a una cadena en c (3)

Quiero hacer un programa que cuando el usuario ingrese AB1245 y AB1245 que el programa lo cambie a AB 12345 (un espacio adicional entre el segundo y el tercer carácter)

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

Según tengo entendido, este programa comenzará con Bilnr [9] y lo establecerá en el valor de Bilnr [8].

Luego configure Bilnr [8] con el valor de Bilnr [7].

Pero no mueve ninguno de los valores. Simplemente imprime AB1245 .


Esta condición de bucle es incorrecta:

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

I menos de 3, así que el ciclo nunca comienza. Probablemente querías un > . También tendrías un bucle infinito si alguna vez comenzó porque tienes I++ y I-- .

Quieres algo como esto:

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

Además, tendrás que reemplazar esa ubicación por un espacio, de lo contrario terminarás con ''AB112345'':

Bilnr[2] = '' '';


Imprime lo mismo, porque el bucle nunca se ejecuta. La condición de bucle es incorrecta, debe ser I>3 para comenzar. El bucle for funciona de la siguiente manera:

for (initialization; condition-that-has-to-be-true; optional-increment-decrement) { }

Recuerde también que las matrices C / C ++ comienzan a contar a 0, no a 1.

Para arreglar tu código completo:

char Bilnr[9] = "AB12345"; for (I=7; I>2; I--) { Bilnr[I]=Bilnr[I-1]; }

Entonces tienes AB112345 . Todo lo que necesitas entonces es ponerlo en el espacio:

Bilnr[2] = '' '';


Una cosa que noto es que si tu ciclo realmente se ejecuta, sería infinito

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

I++ no significa I+1 sino que significa I = I+1

pero su bucle no se ejecutará, porque su condición, I<3 será falso desde el primer momento cuando inicialice I con I=8

También nunca estás configurando I[2] para ser un '' ''

también debe tener en cuenta que las matrices comienzan en 0 , por lo que Bilnr[0] == ''A''

tratar

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