MS-Dos Eingabeaufforderung offen lassen?

fisherman

Cadet 3rd Year
Registriert
Aug. 2002
Beiträge
54
Hallo,

ich versuch mich zur zeit ein bissle an C++ ran zu wagen. Und nun hab ich das Problem, das die fertig kompilierten ".exe" Dateien ja in der MS-Dos Eingabeaufforderung geöffnet werden, aber sich das Ms dos fenster sofort nach dem Programmende schliesst. Wie bekomm ich das hin die Eingabeauf. geöffnet bleibt?

Vielen Dank

fisherman
 
Einfach erst die Eingabeaufforderung öffenen, und dann darin dein Programm aufrufen. ;)
 
Bei Win95/98/ME konnte man das doch in den Einstellungen der Eingabeaufforderung ändern. Weiß leider nicht mehr wie genau
 
einfach "getch()" in den quelltext einfügen dann klappts. Dadurch erwartet das programm die eingabe irgendeiner taste.

viel erfolg
 
Ja das wusste ich schon, aber ich finds immer umständlich Aufforderung zu öffnen Pfad einzugeben und so weiter. Ich glaub es gab mal früher eine Einstellung in den Eigenschaften "nach beenden schließen" dort konnte man auswählen aber bei win 2000 finde ich die eigenschaft nicht?!

fisherman
 
Das mit dem getch klappt nicht, oder gibts da eine bestimmte Stelle wo ich das einfügen muss?
 
das getchar muss ans ende der main-funktion. wenn er beim kompilieren n fehler ausgibt musst du noch ne header-datei mit einbinden aber ich glaube das klappt so.
 
kleines beispiel:

int main(void)
{
cout<<"Hallo Welt"; --/ein echter klassiker
getch();
return 0;
}
 
Ich kriegs nich gebacken, beim kompilieren bringt er keine Fehlermeldung aber das Dos Fenster schliesst sich trotzdem sofort.

Weiss denn keiner wo man die unter Win2000Eigenschaft des Ms Dos Fenster auf "nach ende nicht schliessen" also dass die Eingabeaufforderung offen bleibt, einstellen kann?

fisherman
 
@radiz ne so klappt das auch nich :-(


OK Danke hab verstanden
 
Zuletzt bearbeitet:
@fischermann
Bitte benutzte in Zukunft den Edit-Button, Doppelposts sind hier unerwünscht! ;)
 
probiers mal mit


#include <conio.h>
als precompileranweisung

und dann im code an der stelle wo du willst, dass er wartet:

while(!kbhit());
 
@muh2k4 Danke für den Tip so klappt es.

Vielen Dank für eure Hilfe
 
Vielleicht kannst du es auch mal mit getch() probieren.
Habe ich bei mir als Standard-Vorlage für Konsolenanwendungen gespeichert.

Sieht so aus;

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h> //Diese Includeanweisung mit einfügen
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
cout << "Hiermit wird dein Fenster nicht geschlossen" << endl;
cout << "Sondern wartet auf ein Tastendruck.";

getch(); //Dadurch wartet dein Fenster in Verbindung mit #include <conio.h>
//auf einen Tastendruck

return (0); // Jetzt wird das Fenster durch Tastendruck geschlossen
}
//---------------------------------------------------------------------------

Vielleicht hilfts :rolleyes:

Viele Grüße

Fiona
 
Zuletzt bearbeitet:
Eigentlich sollte (ich habs jetzt nicht getestet) auch eine Ausgabe auf STDERR statt STDOUT das automatische Schliessen verhindern...
... solange es nur zum debuggen ist, in ner Release ist das natürlich nicht grad die schönste Variante...
 
^^du hast im Grunde mehrere möglichkeiten:

1. Per Tastendruck:
Hierzu baust du einfach einen Routine ein, die auf nen Tastendruck wartet. Wobei sich ein cin weniger gut macht, weil es ein RETURN haben will.
Ich würde eher zu getch() oder while(!(kbhit())); tendieren. Beide Varianten benötigen allerdings die conio.h.
Unter Windows hast du außerdem die Möglichkeit, über system("PAUSE"); den DOS/BATCH-Befehl "pause" aufzurufen. Dann kommt dieses "Drücken sie eine beliebige Taste...".

2. Per Wartezeit:
Du kannst auch eine Warteschleife einbauen, die dein programm einfach wartet, bevor es sich beendet.

3. Per Endlosschleife:
Würde ich aber nur im Debuggin benutzen. einfach keine Abbruchbedingung. beenden kannste mit CRTL-C.
 
Öhm @ 2.
Wie war das?

Vor der Optimierung:
Code:
int j=0;
for (int i=0; i<10000; i++) j+=i;

Nach der Optimierung:
Code:
int j=49995000;
 
Zurück
Oben