Ergebnis 1 bis 2 von 2

Thema: [C,C++,Dev-C++, MS Windows] Hilfe, HalloWelt compiliert, aber startet nicht

  1. #1

    [C,C++,Dev-C++, MS Windows] Hilfe, HalloWelt compiliert, aber startet nicht

    Mach dir nichts draus ...
    Mehr als 90% aller C(++) Anfaenger unter Windows haben das selbe Problem.

    Um verwirrung zu vermeiden mal eine ausfuehrliche Erklaehrung.
    Aber zuerst ein paar generellgueltige Aussagen.

    1. DAS IST KEIN FEHLER
    2. ES LIEGT NICHT AN C(++)
    2. IHR SEID ALLE GUI VERWOEHNT

    So . und nun zum Problem ...

    C(++) hat standardmaessig nur Funktionen um Text auf der Console auszugeben, also dort, wo auch die Eingabeaufforderung ist. In den alten DOS Zeiten oder unter Linux ist das ganze kein Problem, da man ohnehin immer auf der Console gearbeitet hat. Seit aber GUIs wie Windows etc modern wurden, rueckte die Eingabeaufforderung immer mehr in den Hintergrung.

    Wenn Windows ueber ein Programm stolpert, das die Console braucht, macht es ein Dosfenster auf, fuehrt das Programm aus, und schliesst das Fenster sofort nach Ende des Programms. Da dein Programm wahrscheinlich nichts tut, ausser Text auszugeben, siehst du nichts, da Windows das Fenster gleich danach schliesst.

    Wenn du allerdings von der Eingabeaufforderung (Start->Ausfuehren->CMD) dein Programm startest (mit 'cd' in das entsprechende Verzeichnis wechseln, mit 'dir *.exe' die compilierte Datei suchen und mit 'dateiname.exe' starten), kommst du nach dem Programmende erneut zur Eingabeaufforderung zurueck, das Fenster bleibt offen (da ja noch der befehlsinterpreter laeuft) und du siehst den Text.

    Die einfachste, aber auch nervige Loesung ist, dass du einfach einen Befehl einbaust, der den Benutzer zu einer Eingabe auffordert. z.B.
    Code:
    system("pause");
    Das ruft den DOS-befehl 'pause' auf, der den Text "Bitte druecken sie eine Taste" ausgibt und auf den Tastendruck wartet. Oder
    Code:
    getch();
    welches darauf wartet, dass du eine Taste drueckst. Dafuer musst du aber die Bibliothek conio.h einbinden, und die gibts nicht auf allen Plattformen und allen Compiliern. Alternativ kannst du auch ein einfaches
    Code:
    char c; cin>>c;
    verwenden, wenn du iostream eingebunden hast und C++ verwendest.

    Alle drei Faelle haben gemein, dass dein Programm nicht beendet ist, bevor du nicht eine Eingabe gemacht hast, und dadurch das DOS-Fenster offen bleibt, wodurch du den Text lesen kannst.

    Das hat allerdings den Nachteil, dass wenn du das Programm von der Eingabeaufforderung aus startest (wie unter linux oder Dos ueblich), du ebenfalls jedesmal ne Taste druecken musst, und das Programm damit fuer den Batchbetrieb praktisch unbrauchbar wird.

    Hallo Welt sollte dann in etwa so aussehen ...
    Code:
    /***********************************************
     ***  Minimalistisches Hallo Welt Programm.  ***
     *** Wartet auf ENTER bevor es sich beendet. ***
     ***********************************************/
    
    #include <iostream>
    
    using namespace std; 
    
    int main(int argc, char** argv) {
      cout<<"Hallo Welt, wie bist du schoen."<<endl;
      char enter_dummy; cin >> enter_dummy;
      return 0;
    }

    Geändert von Ineluki (23.02.2007 um 04:24 Uhr)

  2. #2
    in pascal is das noch so schön einfach. einfach ein repeat until keypressed dahinter und das wars

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •