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