nicht schließen



  • hallo, ich hab hier folgenden code:

    #include <windows.h>
    #include <cstdlib.h>
    #include <iostream>
    using namespace std;
    int main()
    {
      cout << "Text";
    }
    

    das ganze soll eine konsolen-anwendung sein, es klappt auch aber die konsole schließt sich sofort und man kan den text gar nicht lesen, wie krieg ich es hin dass sich die konsole nicht schließt?



  • Zwei Worte: Konsolen FAQ
    (dort behandelt einer der ersten Beiträge genau dein Problem)



  • Schreib es einfach so dann geht es nich mehr zu

    #include <windows.h> 
    #include <cstdlib.h> 
    #include <iostream> 
    using namespace std; 
    int main() 
    { 
      cout << "Text";
    
    system("PAUSE"); 
    }
    

    🙂 🙂



  • Bassmaster schrieb:

    Schreib es einfach so dann geht es nich mehr zu

    #include <windows.h> // kann raus
    #include <cstdlib.h> // kann auch raus!
    #include <iostream> 
    using namespace std; 
    int main() 
    { 
      cout << "Text";
    
    system("PAUSE"); 
    return 0;         // fehlt noch^^
    }
    

    🙂 🙂

    Dass sich die Konsole schließt is beabsichtigt, das kann man beheben, indem man einmal:

    system("PAUSE");
    

    an das Ende schreibt... Damit macht die Konsole eine Pause, bis man eine beliebige Taste drückt...

    oder

    cin.get();
    

    ans Ende schreibt, damit wartet er auch auf eine beliebige Taste...

    edit:
    Also nochmal der komplette Code:

    #include <iostream> 
    using namespace std; 
    int main() 
    { 
    cout << "Text"<<endl; // <<endl; oder \n, damit die nächste Nachricht nicht direkt dran steht...
    
    cout<<"Drücken Sie eine beliebige Taste..."<<endl;
    cin.get();
    return 0;
    }
    


  • Bassmaster schrieb:

    Schreib es einfach so dann geht es nich mehr zu

    ...

    besser nicht - system() gehört zu den Funktionen, die du nur in Notfällen verwenden solltest (d.h. nur, wenn du "intern" keine Alternative zu dem system()-Aufruf hast).



  • Nur zur Info das

    return 0;
    

    ist optional und besser finde ich sowieso EXIT_SUCCESS statt der 0 zu verwenden.



  • also erstens vielen dank euch allen, 2 fragen bleiben noch offen:
    1. gibt es eine möglichkeit es über einen bestimmten knopf schließen zu lassen, z. B. ESC statt ENTER
    2. gibt es eine möglichkeit dass es sich GAR NICHT schließt? ^^



  • Ich kenne nur

    cin.get()
    
    und
    
    system("PAUSE");
    

    was würdest du denn nehmen CStoll oder was wäre das beste ?



  • f1r3 schrieb:

    1. gibt es eine möglichkeit es über einen bestimmten knopf schließen zu lassen, z. B. ESC statt ENTER

    Mit ANSI C++ nicht - aber jenseits des Ansi-Standards haben die Betriebssysteme Alternativmöglichkeiten (ich verweise nochmal auf den Beitrag "Automatisches Schließen verhindern" in der Konsolen-FAQ)

    2. gibt es eine möglichkeit dass es sich GAR NICHT schließt? ^^

    Eine Endlosschleife - aber einen Programmabbruch über Task-Manager (oder Netzschalter) kannst du damit auch nicht verhindern (gegen solche Maßnahmen hast du keinerlei Schutzmaßnahmen).

    Edit @Bassmaster: Ich würde die erste Variante nehmen.



  • Naja, Start --> Ausführen --> cmd und von da aus öffnen, dann schließt die Konsole auch nicht!



  • Entweder wie daLord es sagte über cmd öffnen oder, wenn du Microsoft Visual C++ benutzt, einfach mal Strg+F5 (Starten ohne Debuggen) drücken. Da hält der schon automatisch am Ende an. Bei Codeblocks gibts die Option imho auch.

    Gruß
    Don06



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • @1:
    man kann das ganz einfach mit einer schleife realisieren und zwar so:

    #include <conio.h>
    #include <iostream>
    
    #define ESC 27
    
    using namespace std;
    
    void main ()
    {
    	int close;
    
    	/*
    	Hier steht dein Programmcode
    	*/
    
    	do{
    		fflush ( stdin );  // Den tastaturbuffer löschen
    		close = _getch (); 
    
    		if ( close == 0xE0 )   // Wenn eine Taste wie zB esc oder pfeiltaste gedrückt wird,
    			close = _getch (); // Liefert _getch () 0xE0 zurück, dann muss man die Funktion
    							   // erneut aufrufen
    	}while ( close != ESC );   // Damit bleibt die konsole so lange offen, bis esc gedrückt wird
    }
    


  • Bevor du solche fragwürdigen Tips gibst, lern C - "void main()" kann man eventuell noch durchgehen lassen, obwohl's nicht durch den Standard abgedeckt wird, aber "fflush(stdin);" ist UNDEFINIERT.


Anmelden zum Antworten