Título: Problema con C Publicado por: MrDev en 17 Marzo 2016, 10:31 am Hola buenas, ya he estado por aqui preguntando algunas dudas, y mi problema ahora es con C, estamos haciendo una funcion que introduciendole una cadena, nos la devuelva invertida, mi codigo es este, y no consigo que me la imprima invertida, sino que me sale en blanco justo donde deberia salir la cadena.
Código
Título: Re: Problema con C Publicado por: class_OpenGL en 17 Marzo 2016, 15:36 pm Primero quiero aclarar una cosa: ya hay una función para calcular la longitud de una cadena xD. Se llama strlen y puedes usarla al incluir string.h.
Segundo, recomiendo no retornar cadenas declaradas en una función (para mas detalles, pregunta). Lo que yo haría es intercambiar los valores de la cadena original para obtener el resultado final. Es decir, haría esto: Tenemos la cadena llamada "cadena" (así de original soy) que equivale a "Esto es una cadena" Código
Lo que hay que hacer es recorrer la mitad de la cadena: Código
Por último, intercambia los valores: Código
____________________________ Por si no se ha entendido, esto es lo que está sucediendo: Memoria donde se almacena la cadena: Código: 'E' 's' 't' 'o' '_' 'e' 's' '_' 'u' 'n' 'a' '_' 'c' 'a' 'd' 'e' 'n' 'a' '\0' Entonces, lo que hacemos es: Código: * * Código: * * En el siguiente ciclo, la variable 'i' se decrementa en 1. Entonces, ahora 'i' vale 7 y la operación 'longitud_cadena - i' vale 18 - 7: Código: * * Código: * * Seguimos decrementando 'i': Código: * * Código: * * Y así hasta que i sea 0 (después el while se detendrá por la condición) Código: * * Código: * * Al final, obtenemos la cadena "anedac anuse otsE" Título: Re: Problema con C Publicado por: MrDev en 17 Marzo 2016, 20:14 pm Gracias compañero por tu respuesta, lo he entendido, por cierto, no puedo usar la funcion strlen porque nos pidieron hacerlo con una funcion propia, hecha por nosotros mismos XD. Muchas gracias!
|