Warum springt er zurück!



  • Nabend Leutz,

    hab nen kleines Problem! Bitte schaut euch mal diesen Quellcode an und sagt mir, warum er nach der letzten Eingabe automatisch das programm ganz aschnell schließt!

    #include <iostream>
    using namespace std;

    int main()
    { // Dieses Programm prüft die Eingabe von Ganzen, -
    // Fließkommazahlen und Zeichen:

    int t, h;
    cout << " Eingabe zweier ganzer Zahlen: ";
    cin >> t >> h;
    cout << " t = " << t << ", h = " << h << endl;
    double f, a, r;
    cout << " Eingabe dreier dezimaler Zahlen: ";
    cin >> f >> a >> r;
    cout << " f = " << f << ", a = " << a << ", r = " << r << endl;
    char b1, b2, b3, b4;
    cout << " Eingabe vierer Charaktere: ";
    cin >> b1 >> b2 >> b3 >> b4;
    cout << " b1 = " << b1 << ", b2 = " << b2 << ", b3 = " << b3
    << ", b4 = " << b4 << endl;
    cin.get();
    }

    Danke schonmal im voraus ...



  • Wage kaum zu fragen, aber hast du windows xp?
    vielleicht solltest du was einbauen, was den User vor dem Schließen fragt, ob er das programm beenden will.



  • Hallo!

    Das Problem ist nicht das Betriebssystem, sondern der Eingabepuffer. Der enthält nämlich immer noch ein Linefeed-Zeichen. Deshalb kann cin.get(); ein Zeichen vom Puffer lesen und das Programm endet, d.h. das Fenster wird geschlossen. Du kannst das einfach verhindern, indem Du zuerst den Puffer leerst:

    cin.sync();  // Eingabepuffer leeren
    cin.clear(); // Fehlerflags löschen (falls gesetzt);
    cin.get();
    

    Gruss, Andreas



  • Abend Andreas,

    erstmal Danke für deine Antwort! Also funktionieren tut es jetzt, aber wo genau befindet sich dieses Linefeedzeichen, von dem du sprichst. Ich habe grade angefangen zu programmieren und weiß es nicht! Wäre echt nett von Dir...

    Danke, grüße Alpenjumper


Anmelden zum Antworten