Los carácteres basura seguramente es porque en la función agregar_caracter machacas el '\0' en la línea
Código:
destino[longitud(destino)]=c;
Si tenías la cadena "Vuela\0" y añades el caracter 'D', lo que estas haciendo es reemplazar el \0 por la D y queda "VuelaD", lo que tendría que pasar es que añade la 'D' entre la 'a' y el '\0' para que quede "VuelaD\0"
Espero haber ayudado, saludos