Título: [C][?] No se ejecutan printf Publicado por: JoseluCross en 23 Marzo 2016, 13:55 pm Tengo un problema la mar de raro. Pase lo que pase nunca imprime el texto "prueba", si meto un valor incorrecto si se ejecuta el
Código: printf("El número %d%c no es válido\n",n,c) Código: int main() { Muchas gracias de antemano Título: Re: [C][?] No se ejecutan printf Publicado por: class_OpenGL en 23 Marzo 2016, 15:24 pm Fíjate en una cosa. ¿Qué tiene que pasar para que el if diga que es falsa la condición? O bien que no haya leido los datos suficientes, o bien que el carácter que haya leido sea igual a '\n'. Entonces, se tendrían que dejar de cumplir esas dos condiciones. Para que falle la primera, podríamos introducir un "hola\n" (evidentemente "hola\n" no es un número natural), pero al haber introducido un "hola\n" y haber fallado al traducirlo a número, ese "hola\n" se ha quedado guardado en un búfer esperando a que sea leido. Entonces, una vez fallada la lectura del número natural, se procede a leer el carácter. El primer carácter disponible es la 'h'. Entonces, después de la lectura el entero vale 0 y la variable de tipo carácter vale 'h'. Entonces, como ves, el carácter es distinto de '\n', y por tanto nunca esa condición se va a cumplir.
Título: Re: [C][?] No se ejecutan printf Publicado por: MAFUS en 23 Marzo 2016, 18:04 pm A mi me funciona el código.
A decir verdad me he inventado código para las funciones que no muestras, a lo mejor el problema está allí. ¿Porqué no muestras el código entero, #includes incluidos? Por cierto, para escribir mensajes de error o cadenas de control para depurar el programa mejor hacerlo con fprintf(stderr, cadena_mensaje_error, ...); La razón es que la escritura a stderr se muestra directamente por pantalla o donde sea que apunte stderr, mientras que si se escribe a stdout el mensaje se guarda en búffer y C lo libera cuándo cree conveniente. Y eso es la razón de la existencia de fflush(descriptor_del_flujo_de_salida), para forzar que se libere el buffer de forma inmediata. Título: Re: [C][?] No se ejecutan printf Publicado por: JoseluCross en 23 Marzo 2016, 19:55 pm El código completo es
Código: /*Título: Ejercicio 2 Título: Re: [C][?] No se ejecutan printf Publicado por: MAFUS en 23 Marzo 2016, 22:34 pm Fallos en tu código:
Línea 60 Código Línea 65 Código Estos fors están mal formulados, como puedes ver donde debe haber la comparación hay una asignación. Por cierto, haciendo uso de operadores adecuados, como el de desplazamientos de bits y evitando funciones redundantes como la imprimeResultado y clean_stdin puedes reducir el tamaño del código menos de la mitad. Título: Re: [C][?] No se ejecutan printf Publicado por: JoseluCross en 25 Marzo 2016, 15:07 pm Muchas gracias, era ese el problema. Gracias también por el consejo.
|