Programm schließt sich immer, warum?!



  • GetLastError schrieb:

    aber warum willst du nicht system("PAUSE") nutzen? ist da was schlecht drann? 😕

    Liest du hier



  • GetLastError schrieb:

    SLWall101 schrieb:

    Es muss doch ohne System("PAUSE"); auch funktionieren oder?
    Meine vorherigen Programme haben sich auch nicht geschlossen als ich getchar(); verwendet habe?

    LG

    ja klar, getchar() vor return, wie schon gesagt oder einfahc noch eine "eingabe" die auf einen tastendruck wartet...

    aber warum willst du nicht system("PAUSE") nutzen? ist da was schlecht drann? 😕

    Ne im Grunde genommen nicht, aber ich will dass nicht dass da dann der Text steht etc. optische Gründe praktisch 😃
    Ne, will einfach verstehen, warum man da nicht getchar() verwenden kann sondern ne pause machen muss.. wenn ich dann später größere Programme schreibe, muss es doch auch möglich sein ohne pause arbeiten zu können?



  • SLWall101 schrieb:

    Habe das getchar() auch schon vor return benutz gehabt, funktionierte leider auch nicht..

    Kann sein, daß es mit der letzten Eingabe ein Problem gibt, weil nach dem Lesen des int noch ein '\n' im Eingebastrom hing. Dann hülfe zweimaliges getchar().



  • SLWall101 schrieb:

    Ne, will einfach verstehen, warum man da nicht getchar() verwenden kann sondern ne pause machen muss..

    Vermutlich weil noch was im Buffer/Inputstream von vorherigen eingaben hängt (Newline, Space, ...)

    SLWall101 schrieb:

    wenn ich dann später größere Programme schreibe, muss es doch auch möglich sein ohne pause arbeiten zu können?

    Normale Programme terminieren nach beendigung ihrer Arbeit, und genau das macht dein Programm auch.



  • volkard schrieb:

    SLWall101 schrieb:

    Habe das getchar() auch schon vor return benutz gehabt, funktionierte leider auch nicht..

    Kann sein, daß es mit der letzten Eingabe ein Problem gibt, weil nach dem Lesen des int noch ein '\n' im Eingebastrom hing. Dann hülfe zweimaliges getchar().

    Habe auch schon versucht im ersten und 2. int ein getchar() zu setzen, wurde trz. beendet. Oder soll ich im int main() 2 mal getchar verwenden?
    Oder einfach das \n weg lassen?



  • tkausl schrieb:

    SLWall101 schrieb:

    Ne, will einfach verstehen, warum man da nicht getchar() verwenden kann sondern ne pause machen muss..

    Vermutlich weil noch was im Buffer/Inputstream von vorherigen eingaben hängt (Newline, Space, ...)

    SLWall101 schrieb:

    wenn ich dann später größere Programme schreibe, muss es doch auch möglich sein ohne pause arbeiten zu können?

    Normale Programme terminieren nach beendigung ihrer Arbeit, und genau das macht dein Programm auch.

    Sorry bin noch Anfänger.. Weiß gerade nicht was genau du meinst 😞



  • SLWall101 schrieb:

    Belli schrieb:

    Das ist ein Konsolenprogramm! Öffne eine Konsole, navigiere in das Verzeichnis, in dem die ausführbare Datei liegt, und starte das Programm aus der Konsole!
    Die Konsole bleibt dann nach Programmende offen.

    Wie meinst du das? Soll ich das Programm praktisch aus dem CMD Fenster starten?

    Ja!



  • Skym0sh0 schrieb:

    GetLastError schrieb:

    aber warum willst du nicht system("PAUSE") nutzen? ist da was schlecht drann? 😕

    Liest du hier

    - interessant 🙂 ...
    - spielt hier ja aber keine rolle... 😉

    SLWall101 schrieb:

    tkausl schrieb:

    SLWall101 schrieb:

    Ne, will einfach verstehen, warum man da nicht getchar() verwenden kann sondern ne pause machen muss..

    Vermutlich weil noch was im Buffer/Inputstream von vorherigen eingaben hängt (Newline, Space, ...)

    SLWall101 schrieb:

    wenn ich dann später größere Programme schreibe, muss es doch auch möglich sein ohne pause arbeiten zu können?

    Normale Programme terminieren nach beendigung ihrer Arbeit, und genau das macht dein Programm auch.

    Sorry bin noch Anfänger.. Weiß gerade nicht was genau du meinst 😞

    - d.h dein programm endet wenn es fertig mit seinen "aufgaben/arbeiten" ist wie es ein programm tun soll! 😉

    - du kannst dir auch mit qt ne gui bauen die schließt nicht, außer du gibt den befehl 😉 ... -> sieht auch Optisch schöner aus 😃



  • Belli schrieb:

    SLWall101 schrieb:

    Belli schrieb:

    Das ist ein Konsolenprogramm! Öffne eine Konsole, navigiere in das Verzeichnis, in dem die ausführbare Datei liegt, und starte das Programm aus der Konsole!
    Die Konsole bleibt dann nach Programmende offen.

    Wie meinst du das? Soll ich das Programm praktisch aus dem CMD Fenster starten?

    Ja!

    Aber warum so unpraktisch? Kann es ja aus C++ heraus debuggen will ja da schon sehen ob alles läuft oder nicht?



  • - du kannst dir auch mit qt ne gui bauen die schließt nicht, außer du gibt den befehl 😉 ... -> sieht auch Optisch schöner aus :D[/quote]

    und wie kann ich mir ne gui bauen bzw was ist das?:)
    Bin hier erst bei Kapitel 2, Listing 2.5: FUNC.CPP demonstriert eine einfache Funktion

    http://www.informit.de/books/c%2B%2B21/data/inhalt.htm



  • SLWall101 schrieb:

    Oder soll ich im int main() 2 mal getchar verwenden?
    Oder einfach das \n weg lassen?

    Genau. Oder cin.get(). Direkt vor dem return zweimal.

    Und dann rausfinden, wie man es mit cin richtig machen würde. Steht glaub ich in der Konsolen-FAQ in diesem Forum. Irgendwie vorher schnell die Zeichen weglesen, die noch im cin anliegen.
    Kannst das '\n' vom Benutzer nicht weglassen.
    Der gibt "42\n" ein und erst mit dem '\n' kriegt das Programm die EIngabezeile geschickt. Das Prog liest "42" weg und "\n" steht noch drin. Gemeinerweise kann der Benutzer auch "42 \n" eingeben, dann brächstest Du drei cin.get(), ach wie lästig. Aber dafür gibts ja den Trick mit dem Weglesen.



  • volkard schrieb:

    SLWall101 schrieb:

    Oder soll ich im int main() 2 mal getchar verwenden?
    Oder einfach das \n weg lassen?

    Genau. Oder cin.get(). Direkt vor dem return zweimal.

    Und dann rausfinden, wie man es mit cin richtig machen würde. Steht glaub ich in der Konsolen-FAQ in diesem Forum. Irgendwie vorher schnell die Zeichen weglesen, die noch im cin anliegen.
    Kannst das '\n' vom Benutzer nicht weglassen.
    Der gibt "42\n" ein und erst mit dem '\n' kriegt das Programm die EIngabezeile geschickt. Das Prog liest "42" weg und "\n" steht noch drin. Gemeinerweise kann der Benutzer auch "42 \n" eingeben, dann brächstest Du drei cin.get(), ach wie lästig. Aber dafür gibts ja den Trick mit dem Weglesen.

    Alles klar, das klingt nach einer guten Lösung mal hoffen dass es klappt!:)
    Versuch es Abends gleich und geb dann kurz Bescheid ob alles funktioniert hat. 🙂
    cin.getchar() bedeutet praktisch, dass es beim cin stoppen soll, versteh ich das richtig?:)



  • nein, das es auf eine eingabe wartet, soviel ich weiß.



  • In Visual Studio kann man das Programm auch einfach mit CTRL-F5 starten (anstatt nur mit F5), dann bleibt das Konsolen-Fenster offen nachdem das Programm fertig ist.

    Weiß aber leider nicht ob das in anderen Compilern auch so geht...



  • void keep_window_open()
    {
        std::cout << "Press <RETURN> to close this window...\n";
        char ch = '0';
        while (ch != '\n')
            std::cin.get(ch);
    }
    

  • Mod

    hardware schrieb:

    void keep_window_open()
    {
        std::cout << "Press <RETURN> to close this window...\n";
        char ch = '0';
        while (ch != '\n')
            std::cin.get(ch);
    }
    

    Ich glaube, diese Lösung löst nur die Hälfte des Problems.



  • SLWall101 schrieb:

    Belli schrieb:

    SLWall101 schrieb:

    Belli schrieb:

    Das ist ein Konsolenprogramm! Öffne eine Konsole, navigiere in das Verzeichnis, in dem die ausführbare Datei liegt, und starte das Programm aus der Konsole!
    Die Konsole bleibt dann nach Programmende offen.

    Wie meinst du das? Soll ich das Programm praktisch aus dem CMD Fenster starten?

    Ja!

    Aber warum so unpraktisch? Kann es ja aus C++ heraus debuggen will ja da schon sehen ob alles läuft oder nicht?

    Solange Du es debuggst, sollte es ja nicht von selbst bis zu Ende laufen! Wenn es zu Ende gelaufen ist, gibts nix mehr zu debuggen!

    Im übrigen ist das nicht unpraktisch, sondern ganz normal. Man stelle sich nur mal vor, wie abends der Desktop aussähe, wenn tagsüber eine Menge Programme liefen, die alle ein offenes Konsolenfenster zurücklassen, obwohl sie längst mit ihrer Arbeit fertig sind ... 😕



  • SeppJ schrieb:

    Ich glaube, diese Lösung löst nur die Hälfte des Problems.

    Was wäre die andere Hälfte, die es zu lösen gilt?
    Ich will mit der Frage jetzt nicht blöd kommen - Ich will lediglich meine Antwort verbessern.



  • Also ich finde SYSTEM ("pause" ) in Anfängerprogrammen zum Lernen ok. Wenn man demjenigen sagt, warum man es nicht machen sollte und welche Schwierigkeiten einen da erwarten. Für privaten Gebrauch zum Lernen reicht´s, warum sollte man da also einen 4-Zeiler hinbasteln, der das plattformunabhängig löst? Die meisten Miniprogramme brauchen das nicht, weil sie doch nur in der Schule oder zu Hause übersetzt werden.



  • DocShoe schrieb:

    Für privaten Gebrauch zum Lernen reicht´s, warum sollte man da also einen 4-Zeiler hinbasteln, der das plattformunabhängig löst?

    Warum sollte man nicht eine Konsole öffnen, um das Programm zu starten?


Anmelden zum Antworten