2010-07-28 4 views
6

Ich habe ein einfaches Programm aus einem C-Programmierbuch, und es soll nach zwei ganzen Zahlen fragen und dann addieren sie zusammen und zeigen die Summe. Ich kann die beiden Zahlen eingeben, aber die Ausgabe wird erst am Ende des Programms angezeigt.Warum wird meine Ausgabe nicht angezeigt, bis das Programm beendet wird?

#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; 
} 

Die Ausgabe sieht wie folgt aus:

2 
6 
Enter first integer 
Enter second integer 
Sum is 8 

Jede Hilfe wäre sehr dankbar, danke!

+0

Ich habe dein Beispiel kopiert und eingefügt, und es zeigte sich, wie ich es von meiner Linux-Box erwarten würde. Auf welchem ​​System laufen Sie? Verwenden Sie irgendeine schicke Umleitung oder irgendetwas? – jdizzle

+1

Auf welcher Maschine laufen Sie? Ich habe Ihr Programm ausprobiert und es hat gut funktioniert (zeigt die "Enter first integer" richtig an, bevor ich eine ganze Zahl eingeben kann). Kann sein, wenn Sie "fflush (stdout)" kurz vor dem Scannen versuchen, kann es funktionieren. (Nur ein schmutziger Trick - Entschuldigung). – Shrey

+0

Funktioniert auf VS2008. – Jacob

Antwort

8

Es ist möglich, dass der Ausgang nicht automatisch geleert wird. Sie können fflush (stdout) nach jedem printf() hinzufügen und sehen, ob das hilft.

In welcher Umgebung wird dieses Programm erstellt und ausgeführt?

+0

Ich bin auf Windows XP – Pat

+0

Danke Das hat funktioniert. – Pat

1

Außerdem wird printf seinen Puffer nur automatisch leeren, wenn er einen Zeilenumbruch erreicht.

Wenn Sie unter Windows arbeiten, ist eine neue Zeile \r\n statt \n.

Alternativ können Sie tun:

fflush(stdout); 

Eine weitere Alternative ist Pufferung auszuschalten durch den Aufruf:

setbuf(stdout, NULL); 

EDIT:

Genau dies ähnlich aus (aber nicht das gleiche) Frage: Why does printf not flush after the call unless a newline is in the format string?

+1

Sie müssen sich nicht um das '\ r' auf Windows kümmern. Dies wird vom Stream selbst übernommen, wenn Sie '\ n' senden. –

+0

Danke. Der fflush (stdout) löste mein Problem. – Pat

+0

Es sollte jedoch nicht benötigt werden! –

Verwandte Themen