2010-07-28 16 views
6

Tengo un programa simple de un libro de programación C, y se supone que debe pedir dos enteros y luego sumarlos y mostrar la suma. Puedo ingresar los dos números, pero la salida no aparece hasta el final del programa.¿Por qué mi salida no aparece hasta que el programa sale?

#include <stdlib.h> 
#include <stdio.h> 

/* Addition Program*/ 
main() 
{ 
     int integer1, integer2, sum; 
     printf("Enter first integer\n"); 
     scanf("%d", &integer1); 
     printf("Enter second integer\n"); 
     scanf("%d", &integer2); 
     sum = integer1 + integer2; 
     printf("Sum is %d\n", sum); 
     return 0; 
} 

La salida tiene el siguiente aspecto:

2 
6 
Enter first integer 
Enter second integer 
Sum is 8 

Cualquier ayuda sería muy apreciada, gracias!

+0

Copié/pegué su ejemplo y apareció como lo esperaría en mi linux box. ¿En qué sistema estás corriendo? ¿Estás usando alguna redirección elegante o algo? – jdizzle

+1

¿En qué máquina está ejecutando esto? Probé tu programa y funcionó bien (mostrando "Enter first integer" correctamente antes de permitirme ingresar un entero). Puede ser que si intentas "fflush (stdout)" justo antes de escanear, puede funcionar. (Solo un truco sucio, lo siento). – Shrey

+0

Funciona en VS2008. – Jacob

Respuesta

8

Es posible que la salida no se descargue automáticamente. Puede agregar fflush (stdout) después de cada printf() y ver si eso ayuda.

¿Qué entorno estás utilizando para compilar y ejecutar este programa?

+0

Estoy en Windows XP – Pat

+0

Gracias Eso funcionó. – Pat

1

Además de lo anterior, printf solo vaciará automáticamente su memoria intermedia si llega a una nueva línea.

Si está ejecutando en Windows, una nueva línea es \r\n en lugar de \n.

alternativa, se puede hacer:

fflush(stdout); 

Otra alternativa es convertir el uso del búfer llamando:

setbuf(stdout, NULL); 

EDIT:

acaba de encontrar esto similar (pero no igual) pregunta: Why does printf not flush after the call unless a newline is in the format string?

+1

No tiene que preocuparse por el '\ r' en Windows. Eso es manejado por la transmisión en sí cuando envías '\ n'. –

+0

Gracias. El fflush (stdout) resolvió mi problema. – Pat

+0

¡No debería ser necesario, sin embargo! –

Cuestiones relacionadas