Problem mit scanf()
-
Hallo Leute
Ich bin C anfänger und hab nen Problem mit scanf().
Ich habe folgenden 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; }
Dabei sollte ja eigentlich erst das erste printf() ausgeführt werden, dann sollte auf die Eingabe gewartet werden und dann sollte das ganze nochmal ausgegeben werden.
Komischerweiße passiert aber nichts wenn ich das Program starte, bis ich ne Zahl eingebe und dann Enter drücke. Dann wird das ganze Zeugs ausgegeben:
C:\CBuilderX\samples\welcome\windows\Release_Build\Welcome.exe
10Bitte geben Sie eine Zahl ein : Die Zahl, die Sie eingegeben haben, war 10Es wird also der scanf() Befehl vor dem printf() befehl ausgeführt.
Kann es sein, das der Compiler beim Optimieren die reihenfolge der befehle vertauscht?
Oder hat sonst jemand ne Idee was da schief läuft?
Ich benutze den Borland C++ Builder 5.0Gruß Enton
-
Muas wohl irgend eine Einstellung bei deinem Builder sein, am Quelltext ist kein Fehler zu sehen! Hab's sogar ausprobiert (zu Testzwecken) und funktioniert aber alles wie gewollt!
Hab's mit dem BCB6 probiert, aber daran kann es nicht liegen!
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
du könntest mal nach dem ersten printf() ein
fflush(stdout);
einfügen.
Dieser Befehl erzwingt die Ausgabe an dieser Stelle.
Gruß mcr
-
Danke
Das mit dem fflush() funktioniert.
Mich wundert es nur, warum ich das eingeben muss, und bei anderen Programmen funktioniert es ohne.
Noch ein kleiner Nachtrag: Benutze den BorlandC++BuilderX 5.0
Hab das glaub ich beim ersten Post falsch hingeschrieben.Gruß Enton