Título: Invertir una palabra, ERROR Publicado por: NicoSanhueza en 22 Mayo 2018, 02:16 am Buenas noches a todos, espero que estén bien.
tengo un problema con el codigo. Resulta que al ingresar una palabra de 3 caracteres se invierte con exito, pero cunado ingreso una de 4 o mas caracteres esta se invierte pero arroja otros caracteres que no corresponden. ej. Ingrese una palabra: estadio Palabra invertida: oidatseuÒLHı■ èjuestadio se invierte la palabra(rojo), pero el resto esta de más... Aqui les dejo el codigo #include <stdlib.h> #include <stdio.h> int main() { int i,k,tam=0; char pal[20]; char inv[20]; printf("Ingrese una palabra:"); scanf("%s",pal); for(i=0;i<21;i++)//TAMAÑO DE LA PALABRA { if(pal!=0) tam++; else break; } for(k=0;k<=tam-1;k++)//INVERTIR LA PALABRA { inv[k]=pal[tam-1-k]; } printf("Palabra invertida:%s",inv); return 0; } A mi juicio el for para invertir esta bien, tendra un error o es el printf del final? Gracias de antemano Título: Re: Invertir una palabra, ERROR Publicado por: srWhiteSkull en 22 Mayo 2018, 11:26 am En C/C++ normalmente el espacio que reservas, por ejemplo esos 20 caracteres, no son limpiados, es un espacio que se encuentra sucio. En lenguajes de bajo nivel es común esto y es el programador quien tiene que hacerse cargo de la completa gestión del espacio reservado.
En resumen, si está sucio, al reservar el espacio o volver a sobreescribirlo, límpialo con un bucle o alguna función, etc y lo rellenas de espacios. También otra práctica es marcar el final de la cadena con un valor cero. Por ejemplo : Código: ... PD Por cierto acostúmbrate a usar la etiqueta correspondiente para publicar código. |