Ausgabe in C



  • Von dem Problem habe ich schon mal im Zusammenhang mit Eclipse gelesen.
    Also bei der Ausführung des Programms aus Eclipse heraus.
    Die Shell hat da wohl ein Problem.



  • Das kann natürlich sein. Meines Wissens flusht printf nur, wenn die Standardausgabe ein (interaktives) Terminal ist.



  • fflush(stdout);
    


  • Danke schon mal für die Antworten.

    Also.. ich habe mein Test-Programm selber noch mal ausprobiert. Der Fehler tritt weiterhin auf.

    fflush(stdout);
    

    hat da leider auch nicht geholfen (ich habe es an den Anfang der Mein-Funktion gesetzt).

    Ich benutze nicht Eclipse, sondern CygWin. Wenn ich das Programm mit genau den von mir gepostetem Code ausführe, sieht das so aus :
    http://s7.directupload.net/images/131108/kh3hl56l.png

    Dabei habe ich zuerst die beiden Zahlen eingeben müssen, und erst danach den Text gesehen.



  • Sorry, Link funktioniert nicht.

    Hier der richtige :
    http://s7.directupload.net/images/131108/kh3hl56l.png



  • Mann, doch nicht am Beginn des Programms, sondern dort, wo du die Ausgabe sicherstellen willst, also vor (jedem) scanf.


  • Mod

    Bashar schrieb:

    Das kann natürlich sein. Meines Wissens flusht printf nur, wenn die Standardausgabe ein (interaktives) Terminal ist.

    Das sollte Aufgabe des Terminals sein. printf weiß nichts davon, wo seine Ausgabe hingeht. Die meisten interaktiven Terminals (zumindest unter Linux) flushen automatisch bei jedem Zeilenumbruch. Das Eclipseterminal anscheinend nicht.



  • Wutz schrieb:

    Mann, doch nicht am Beginn des Programms, sondern dort, wo du die Ausgabe sicherstellen willst, also vor (jedem) scanf.

    Danke, daran hat es gelegen. Hab das inzwischen vor alle scanf im großem Programm gesetzt und nun ist alles richtig.



  • Das ist aber ein Problem von deiner Umgebung.

    Normalerweise ist das nicht nötig.



  • SeppJ schrieb:

    Bashar schrieb:

    Das kann natürlich sein. Meines Wissens flusht printf nur, wenn die Standardausgabe ein (interaktives) Terminal ist.

    Das sollte Aufgabe des Terminals sein. printf weiß nichts davon, wo seine Ausgabe hingeht. Die meisten interaktiven Terminals (zumindest unter Linux) flushen automatisch bei jedem Zeilenumbruch. Das Eclipseterminal anscheinend nicht.

    Das siehst du falsch. Das Terminal weiß nicht, wann was geflusht wird. Das Terminal geht es nichtmal etwas an, ob du printf benutzt, gepuffert oder ungepuffert, oder ob du deine Ausgaben vielleicht direkt über den Systemaufruf machst. Umgekehrt weiß die stdio (über sowas wie isatty()), ob stdout an einem interaktiven Terminal hängt und kann dementsprechend den Pufferungsmodus umschalten.


  • Mod

    Jedenfalls erfolgt es nicht auf printf-Ebene. Ich habe mal nachgeschlagen, dieses Verhalten ist POSIX-Standard (in C99 übernommen) für die Ausgabestreams. Die Funktionen, die auf diesen arbeiten, bekommen davon nichts mit.


Anmelden zum Antworten