Tienes que acostumbrarte a probar tus códigos con lápiz y papel. Más adelante sería altamente recomendable que aprendieses a utilizar el depurador de código.
Primer problema:
Se supone que tu programa ha de leer línea a línea... tu programa va a leer la primera línea, después la segunda... en el mismo sitio donde se encontraba la primera... y así. Cuando haya terminado únicamente vas a encontrar en
texto el contenido de la última línea. Quizás el while debería abarcar también la función que invierte el texto.
Segundo problema:
Código C:
Ver originalint i,j;
j=0;
for(i
=strlen(texto
)-1; i
>=0; i
--){ reverso[j]=texto[i];
j++;
}
Imagina que consigues que tu programa lea dos líneas "hola" y "adios"
- j = 0
- i = strlen("hola")-1 = 3
- reverso[0] = texto[3]
- j = j+1 = 1, i = i-1 = 2
- reverso[1] = texto[2]
- j = j+1 = 2, i = i-1 = 1
- reverso[2] = texto[1]
- j = j+1 = 3, i = i-1 = 0
- reverso[3] = texto[0]
- j = j+1 = 4
- i = strlen("adios")-1 = 4
- reverso[4] = texto[4]
¿Ves algo raro en el paso 12? Eso pasa por no inicializar
j antes de procesar una línea. A nada que pruebes el código con lápiz y papel aprendes a ver estas cosas... aunque, como te he comentado, quitarse el miedo y aprender a usar el depurador de código es de las mejores decisiones que puedes tomar a la hora de programar.
Un saludo.