Eclipse MinGW - scanf wird immer vor printf ausgeführt

Joggal

Aktives Mitglied
Hallo an alle,

Ich habe heute den MinGW C/C++ Compiler und die C/C++ Plugins für Eclipse installiert.
Soweit so gut.. Hello World Prorgamm wird erfolgreich ausgeführt.

Allerdings musste ich folgendes "Phänomen" feststellen:

Code:
#include <stdio.h>

int main (void) {
   int i;               /* ein ganzzahliger Datentyp */
   printf("Bitte geben Sie eine Zahl ein : ");
   scanf("%d",&i);      /* Wartet auf die Eingabe.    */
   printf("Die Zahl, die Sie eingegeben haben, war %d\n",i);
   return 0;
}

Führt zu folgendem Ergebnis:
Code:
4
Bitte geben Sie eine Zahl ein : Die Zahl, die Sie eingegeben haben, war 4

Jedesmal, wenn ich das Programm ausführe, dann kommt der Scanf Befehl VOR dem Printf.

Weiß hier jemand woraun das liegt?

lg
 

Thallius

Top Contributor
Das liegt daran, das printf erstmal nur in den stdout buffer schreibt aber dieser noch nicht ausgegeben wird. Ausgegeben wird der erst bei einem linefeed "\n". Danach machst du den scanf welcher sich die Zahl aus dem stdin holt. Dieser hat mit dem stdout nichts zu tun. Erst beim zweiten printf hast du einen \n drin und dann wir der stdout ausgegeben.

Gruß

Claus
 

Joggal

Aktives Mitglied
Hallo und danke für die Antwort!

Habe auch nochmal recherchiert und das selbe rausgefunden :D
Am besten macht man einfach ein fflush(stdout) nach dem printf, damit das auch wirklich alles aus dem Puffer rausgeschrieben wird!

lg
 

Ähnliche Java Themen

Neue Themen


Oben