Konsolenprogramm per Tastendruck beenden



  • Hi.
    Bin grad totaler N00b in C++ !
    Versuch es gerade zu lernen deshalb hab ich ne Frage an alle "Checker" 🙂 !!
    Also ich schreibe gerade ein kleines Konsolenprogramm wo man nur seinen Namen eingeben kann und er wird dann wieder ausgegeben. Nur sobald er ausgegeben wird, beendet sich die Konsole.
    Gibt es einen befehl damit das Programm erst bei einem Tastendruck beendet wird ?

    SChon mal vielen DAnk im Vorraus





  • Hi.
    Also danke.
    Er wartet, das is richtig, aber der letzte Befehl wird nicht mehr angezeigt, erst wenn ich ne Taste drück und dann is des Programm scho beendet.

    QuellCode :

    #include <iostream.h>
    #include <conio.h>
    #include <windows.h>

    void warten (void)
    {
    FlushConsoleInputBuffer ( GetStdHandle ( STD_INPUT_HANDLE ) );
    getch ();
    }

    void main (void)
    {
    cout << "Dies ist ein Test Programm\n";

    int a;
    char gehen[30];

    for(a=1;a<=10;a+=1)
    {
    cout << "! - ! - ! ! Hallo Leute ! ! - ! - ! \n \n";
    }
    cout << "Ach da faellt mir grad ein, wie geht\'s dir eigentlich grad so im Moment ?";
    cin >> gehen;
    cout << "Hmmm also dir geht\'s grad " << gehen;
    warten();

    }



  • #include <iostream>
    #include <conio.h> 
    #include <windows.h> 
    using namespace std;
    
    void textcolor(int color)
    { 
        SetConsoleTextAttribute( ::GetStdHandle( STD_OUTPUT_HANDLE ), color ); 
    } 
    
    void warten () 
    { 
        FlushConsoleInputBuffer( ::GetStdHandle( STD_INPUT_HANDLE ) ); 
        getch (); 
    } 
    
    int main() 
    { 
        cout << "Dies ist ein Test Programm" << endl << endl; 
    
        char gehen[30]; 
    
        textcolor( LIGHTGREEN );
        for( int a=1; a<=10; ++a ) 
        { 
            cout << "! - ! - ! ! Hallo Leute ! ! - ! - ! \n \n"; 
        }
        textcolor( WHITE );     
        cout << "Ach da faellt mir grad ein, wie geht\'s dir eigentlich grad so im Moment ?" << endl; 
        cin >> gehen; 
        cout << "\nHmmm, also dir geht\'s grad " << gehen << '.' << endl; 
        warten(); 
    
    }
    
    /*
    // Auszug aus conio.h:
    typedef enum
    {
        BLACK,
        BLUE,
        GREEN,
        CYAN,
        RED,
        MAGENTA,
        BROWN,
        LIGHTGRAY,
        DARKGRAY,
        LIGHTBLUE,
        LIGHTGREEN,
        LIGHTCYAN,
        LIGHTRED,
        LIGHTMAGENTA,
        YELLOW,
        WHITE
    } COLORS;const int WHITE = 15;
    */
    

    std::endl ist Kombination aus \n und std::flush
    Das hilft. 😉
    Ansonsten etwas Farbe, wenn schon systemspezifisch.
    Evtl. sollte man std::string anstelle char-Array (C-String) einsetzen.



  • So grad selbst gemerkt
    Mit nem cout.flush geht das :
    #include <iostream.h>
    #include <conio.h>
    #include <windows.h>

    void wait ()
    {
    FlushConsoleInputBuffer ( GetStdHandle ( STD_INPUT_HANDLE ) );
    getch ();
    }

    void main (void)
    {

    cout << "Dies ist ein Test Programm\n";

    int a;
    char gehen[30];

    for(a=1;a<=10;a+=1)
    {
    cout << "! - ! - ! ! Hallo Leute ! ! - ! - ! \n \n";
    }
    cout << "Ach da faellt mir grad ein, wie geht\'s dir eigentlich grad so im Moment ?";
    cin >> gehen;
    cout << "\nDir geht's geradeeeeeee " << gehen;
    cout.flush();
    wait();
    }



  • Besser ist std::endl als Kombi aus '\n' und std::flush, aber ansonsten richtig erkannt.

    Übrigens int main(), nicht void main(void).

    In der for-Schleife ++a anstelle a+=1.

    Die Farbe gefällt hoffentlich auch, lockert Konsolen auf. 😉


Anmelden zum Antworten