Problem mit kleinen Programm



  • Wenn ich ein sehr einfaches C++-Programm schreibe wie z.B.:

    #include <iostream.h>

    void main()
    {
    cout << "Hallo Welt!" << endl;

    }

    Und es dann mit meinen Compiler (devcpp 4.9.5.0) kompiliere und danach starte, dann öffnet sich nur ganz schnell ein Doss-Fenster und schließt sich sofort wieder.
    Was hab ich falsch gemacht oder wie kann ich das Problem beheben, damit in diesem Fallen "Hallo Welt" auch ausgegeben wird.
    Als Betriebssytem verwende ich Windows XP. Mit Windows ME hatte ich allerdings genau das selbe Problem.
    Andere komplexere Doss-Programme laufen wiederum, nur dieses will irgendwie nicht funzen. 😞

    Bitte um Hilfe
    thx



  • Hallo

    Vermutlich hast du es als Konsolenanwendung geschrieben. Mach mal die Eingabeaufforderung auf Suche den Pfad des Programmes und starte es von dort.
    "Hallo Welt!" wird wahrscheinlich ausgegeben, nur schneller als du es siehst.

    SArkin



  • Hallo,
    die Antwort auf deine Frage findest du in den Konsolen-FAQs:

    FAQ - DOS und Win32-Konsole

    Und da das kein Standard-C++ Problem ist, verschiebe ich dich auch ins Konsolenforum.



  • Wie kann ich es aber schreiben, dass wenn ich die *.exe-datei des "Hallo_Welt" Programms öffne, dass dann das Doss-Fenster geöffnet bleibt und nicht gleich wieder geschlossen wird?



  • Zum Beispiel mit

    int a;
    cin >> a;

    dann sollte dein Programm warten bis du eine Zahl eingibts.
    Es gibt auch eine Funktion die auf irgendein Zeichen wartet "getchar()", da weiss ich aber auf die Schnelle nicht ob du noch etwas includieren musst.

    SArkin



  • Nein! getchar() und diese cin-Experimente sind nicht (auf die Dauer) brauchbar. Seht euch mal die Konsolen-FAQ an.

    Muss man nicht mal in den Index gehen, der Threadtitel sagt schon alles!

    MfG SideWinder



  • #include <iostream>
    using std::cout,std::cin;
    
    int main()
    {
    cout<<"Hall Welt";
    cin.get();
    return 0;
    }
    

    sollte eigentlich alles machen was du willst!
    @ sidewinder: und experimente mit cin sind auch nich dabei 🙂



  • lol sagt nie wieder getchar das bringt commander noch zur weissglut.am besten das wort im forum zensieren 😉



  • thx aber so kann man`s doch auch machen, glaube ich:

    #include <iostream.h>
    #include <stdio.h>

    void main()
    {
    cout<<"Hallo Welt"<<endl;
    getchar();
    };



  • Headshot!

    Entweder so:

    #include <iostream>
    using namespace std;
    
    void wait ()
    {
        cin.clear ();
        cin.ignore ( cin.rdbuf () -> in_avail () );
        cin.get ();
    }
    
    int main ()
    {
        cout << "Hello World" << endl;
        wait ();
    
        return ( 0 );
    }
    

    Oder so:

    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    void wait ()
    {
        DWORD dwNumberOf ( 0 );
        HANDLE hInput ( GetStdHandle ( STD_INPUT_HANDLE ) );
        TCHAR tcInput ( '\0' );
    
        FlushConsoleInputBuffer ( hInput );
        ReadConsole ( hInput , tcInput , 1 , &dwNumberOf , 0 );
    }
    
    int main ()
    {
        cout << "Hello World" << endl;
        wait ();
    
        return ( 0 );
    }
    

    MfG SideWinder


Anmelden zum Antworten