Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 4 von 4
  1. #1
    Neuer Benutzer
    Registriert seit
    12.03.2016
    Beiträge
    2

    Standard Eclipse mit C IDE. Problem mit stdio

    Hallo,

    ich fange gerade neu an C zu lernen und erlebe direkt meinen ersten Rückschlag.
    Ich habe die C IDE für Eclipse installiert und es klappt alles super. Die Programme werden kompiliert und gestartet.
    Nur bei Eingabeaufforderungen habe ich Probleme. Wenn ich einen printf Befehl habe und danach etwas einlesen möchte wird der printf Befehl erst ausgeführt wenn die Tastatureingaben fertig sind.
    Code:
    #include <stdio.h>
    
    int main(void) {
    	printf("Zahl eingeben:");
    	int x = 0;
    	scanf ("%d", &x);
    	printf ("%d", x);
    	return 0;
    }
    Beim Ausführen bleibt die Konsole leer. Gebe ich eine Zahl ein, Spuckt es danach beide printf Befehle aus.
    So kann ich auch komplexere Programme schreiben, die mehrere Variablen einlesen. Aber die Konsole bleibt immer so lange leer bis alle Variablen eingetippt wurden.
    Das gleiche Problem besteht übrigens auch mit getchar.

    Schonmal Vielen Dank

    Jack

  2. #2
    Stammgast
    Registriert seit
    18.07.2008
    Beiträge
    3.025

    Standard

    Was genau wuerdest Du denn erwarten? scanf dient dazu eine Eingabe in einem bestimmten Format entgegen zu nehmen. Die Eingabe wird dann beendet wenn Du Enter drueckst. Solang ist Dein Programm praktisch "angehalten". Weiterlaufen tut das Programm erst wenn Du mit Enter bestaetigst.

    Ein Beispiel und eine Referenz gibt es z.B. hier:

    http://www.cplusplus.com/reference/cstdio/scanf/

  3. #3
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.095

    Standard

    Das

    printf("Zahl eingeben:");

    sollte vorher kommen....
    Christian

  4. #4
    Neuer Benutzer
    Registriert seit
    12.03.2016
    Beiträge
    2

    Standard

    Genau, der printf-Befehl wurde quasi erst ausgeführt nachdem eine Zahl entgegengenommen wurde. Hat man alle Zahlen eingegeben erschien erst dann der komplette Text in der Konsol (also auch die printf Befehle vor dem scanf.
    Das ganze scheint ein bug zu sein. Habe nach einigem suchen aber eine Lösung gefunden. Gibt man am Anfang des codes den Befehl
    Code:
     setvbuf(stdout, NULL, _IONBF, 0);
    ein, wird alles normal ausgegeben

 

 

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •