automatisches schließen verhindern.. es funzt nicht !



  • hiho
    also mein problem nochmal schnell erlaeutert:
    ich schreibe ein c++ prog.
    compiliere es fehlerfrei.
    ich starte die exe, aber nach dem die code ausgefuehrt wurde, schliesst sich das fenster automatisch.

    auch der thread in der faq ( Automatisches Schließen verhindern ) konnte nich wirklich helfen..
    mit den codes ist das programm nur groesser, das problem behebt es aber nit.

    evt mach ich ja was falsch..
    wie genau muss man den code einbinden?

    ich geh jetzt mal von nem ganz einfachen programm aus wie:

    #include <iostream.h>
    
    int addiere(int a, int b)
    {
    int c=a+b;
    return c;
    }
    int main()
    {
    cout << "Geben sie zwei Zahlen ein!
    ";
    int zahl1;
    int zahl2;
    cin >> zahl1;
    cin >> zahl2;
    
    cout << addiere(zahl1, zahl2);
    return 0;
    }
    

    merkwuerdig:
    wenn ich ein programm direkt in vc++ ausfuehre, schliesst sich das fenster nicht automatisch. wenn ich aber die exe datei extern ausfuehre, passiert das gleiche wie oben beschrieben. [nutze vcc+ und borland]



  • Beim MSVC schließt es sich net, weil der automatisch auf einen tastendruck wartet. Damit man eben auch bei Programmen die sich später von alleine schließen sollen, noch die Ausgabe sehen kann.

    Es heißt <iostream> und net <iostream.h> ;).

    Über der Funktion addiere fügst du den Code ein, und am Schluss - vor return wohlgemerkt - rufst du die Funktion auf.

    #include <iostream> // Änderung des Headers auf die neue Version
    
    void wait () // Definition der Funktion
    {
        std::cin.clear ();
        std::cin.ignore ( std::cin.rdbuf () -> in_avail () );
        std::cin.get ();
    }
    
    int addiere(int a, int b)
    {
    int c=a+b;
    return c;
    }
    int main()
    {
    cout << "Geben sie zwei Zahlen ein!\n";
    int zahl1;
    int zahl2;
    cin >> zahl1;
    cin >> zahl2;
    
    cout << addiere(zahl1, zahl2);
    
    wait(); // Aufruf noch vor return
    
    return 0;
    }
    

    MfG SideWinder



  • es geht nich 😉

    " 2 errors in compile"

    aenderung meinerseits von <iostream> in <iostream.h>
    -> es funktioniert
    😨

    also thx ! nu gehts 🙂



  • Habe auch schon den Fehler -> hatte vergessen den std-namespace zu aktivieren. Also solltest du das hier noch lesen, ändere wieder auf <iostream> und schreibe unter <iostream> "using namespace std;".

    MfG SideWinder



  • Binde über #include stdlib.h ein. Dann schreibst du in den Code system("PAUSE");
    und an dieser Stelle wartet das Programm dann bist du eine Taste drückste. Oder fals du win 98 verwendest: Mache eine EXE Verknüpfung und gehe auf eigenschaften. Dort stellst du "Nach Beenden schließen aus".



  • Beide male schlecht. system ist sowieso schlecht - langsam, von der Konsole die dahintergeschaltet ist abhängig und noch dazu ist system("pause") im speziellen schlecht, da die Meldung dahinter nicht bestimmbar ist.

    Die stdlib wird also auch nicht benötigt.

    Und dem User vor dem Ausführen des Programms noch dazu zu zwingen sein Sysem umzustellen ist auch nur noch den alten DOS-Zockern vorbehalten.

    MfG SideWinder



  • Original erstellt von SideWinder:
    **Habe auch schon den Fehler -> hatte vergessen den std-namespace zu aktivieren. Also solltest du das hier noch lesen, ändere wieder auf <iostream> und schreibe unter <iostream> "using namespace std;".

    MfG SideWinder**

    und welchen vorteil bringt das im gegensatz zu iostream.h ?



  • iostream.h ist nicht mehr norm, ich glaub es heisst auch nicht mehr im Ansi-Standart, oder so ähnlich.



  • Und welchen Vorteil bringt das im Gegensatz zu iostream.h ?

    Schau dir mal diesen Link an -> Link

    mfg tHe pHreak

    [ Dieser Beitrag wurde am 24.04.2003 um 12:19 Uhr von tHe pHreak editiert. ]



  • Wenn sich bei mir ein Fenster beim Programmende nicht schließen soll, dann ruf ich einfach _getch() auf, das wartet ganz automatisch auf eine Eingabe.
    Oder ist das zu einfach oder zu groß? 😕



  • Ist nicht genügend - siehe FAQ.

    MfG SideWinder



  • Es schließt sich automatisch, da keine Eingaben mehr erwartet werden. Probiere vielleicht mal getch() oder sowas am Ende anzuhängen.



  • PCMan - da wird ein ganzer Thread lang erklärt wieso getch() alleine eben nicht reicht und warum er es so machen soll wie oben geschildert und du postest am Schluss "Nimm getch()"?

    Also echt, ich schließe hier einmal bevor da noch mehr so unfug kommt.

    MfG SideWinder


Anmelden zum Antworten