Ver Mensaje Individual
  #12 (permalink)  
Antiguo 28/07/2014, 16:20
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 6 meses
Puntos: 61
Respuesta: Problema con printf en C

Tengo una teoria para los numeros raros que ves:

El código que tienes chequea de "derecha a izquierda" (lineas 48 y 55) un arreglo (string) que se llena de izquierda a derecha. El arreglo es un string no inicializado, por lo que tiene basura que tu codigo visitador encuentra antes y produce los numeros raros.

Dicho de otro modo, el inicializar fin y pos es importante, pero no es suficiente para erradicar el problema que te hizo abrir este post.

Te propongo que, para hacerlo explícito, vuelvas a no tener inicializada las variables en cuestion (fin y res) y pongas en el main este cambio:

char numero[20];

cambiarla por

char numero[20] = { 0, 0, 0, 0, 0, 0, '3' };

podrias querer "defender" el programa diciendo, pero ¿y estos valores?

La idea detrás de esto es dejar explicito el contenido ("basura en la memoria") de esta variable no inicializada. Luego numero será leido por un scanf() posterior, ¿verdad?
Pon un numero pequeño (2 digitos, por ejemplo "15")

Mi sospecha es que tu codigo de visita de derecha a izquierda encontrará ese '3' primero y hará operatoria con esos valores.

Prueba poniendo menos 0 a la izquierda de ese '3' y verás aparecer distintos comportamientos dependiendo de esa cantidad.

Si vuelves "numero" a su definicion original (no inicializada), entonces el comportamiento de tu programa dependerá del contenido de la memoria de ese momento.

Solucion?
- Los ciclos para descubrir los digitos los tienes que hacer de "izquierda a derecha", no de "derecha a izquierda".
- "fin" y "pos" deben inicializarse
__________________
Visita mi perfil en LinkedIn

Última edición por CalgaryCorpus; 28/07/2014 a las 16:26