Título: [C] [solved] Comportamiento inesperado Publicado por: reconFito en 4 Abril 2022, 22:15 pm Hola a todos.
Estoy tratando de implementar el metodo str.center() que existe en Python pero en C y de paso estoy aprendiendo a programar en C, pero al borrar la linea que añade el carácter nulo al String resultante obtengo un resultado indeseado. He estado dandole vueltas al asunto pero no me da el maní que tengo por cerebro, asi que acudo a ustedes en buscas de respuesta. Muchas Gracias. Código
Título: Re: [C] [unsolved] Comportamiento inesperado Publicado por: MAFUS en 5 Abril 2022, 00:05 am Estas devolviendo una dirección de la pila que ya se ha liberado. output, de la función center, es un array y por tanto se dimensiona como variable local perteneciente a dicha función. Cuando la función termina la pila decrece y buffer, que apuntaba al inicio del array, ahora apunta a una dirección de la cual no tienes control.
Si quieres devolver esa cadena debes generarla en el montón (heap) y de esta forma va a persistir. Y sí, si eliminas esa línea del \0, tendrás cosas raras porque strcat busca ese carácter para empezar a copiar la cadena origen. Igualmente, como has generado la cadena con malloc, debes liberarla con free. Código
Título: Re: [C] [unsolved] Comportamiento inesperado Publicado por: reconFito en 5 Abril 2022, 00:33 am @Mafus, gracias por tu respuesta, el problema no es con el valor de retorno, pero
leyendo un poco tu respuesta sobre como strncat funciona, ahora comprendo que mi problema estaba en la concatenación y en el no entender bien como funciona strncat. Gracias @Mafus. Título: Re: [C] [solved] Comportamiento inesperado Publicado por: MAFUS en 6 Abril 2022, 10:50 am Ok, pero sí, también tenías ese problema con el retorno, aunque aparentemente te funcionara el programa.
|