DOS-Programm beendet nach dem durchlauf



  • hi,
    ich weis, das hat bestimtm schon zig mal jemand gefragt, aber ich habe auch schon ne ganze zeit gegoogled und foren durchforstet und habe schon mehrer sachen probiert aber ich komme nicht drauf.

    das programm hier beednet nach dem durchlauf immer :

    #include <stdio.h>
    int main()
    {
        int a;
    
        printf("Bitte machen Sie eine Eingabe!\n");
        scanf("%i",&a);
        printf("%i",a);
    
        return 0;      
    }
    

    was muss ich ans ende schreiben damit das programm nich direkt beendet ?

    mfg fr3ax



  • Schau mal in die Konsolen-FAQ (etwas weiter unten im Forum), da beschäftigt sich gleich der oberste Thread ausführlich mit diesem "Problem".



  • Hi.

    Du könntest das ganze in eine while Schleife stecken:

    #include <iostream>
    using namespace std;
    
    int main(){
        int a;
        while(cin){
            cout<<"Machen Sie ihre Eingabe"<<endl;
            cin>>a;
            //Prüfen ob das Programm beendet werden soll:
            if(a==0){
                break;
            }
            //...
        }
    }
    

    oder:

    #include <stdio.h>
    
    void beenden(){
        system("PAUSE");
    }
    
    int main()
    {
        int a;
        atexit(beenden);
    
        printf("Bitte machen Sie eine Eingabe!\n");
        scanf("%i",&a);
        printf("%i",a);
    
        return 0;      
    }
    

    Die zweite Variante find ich besser, weil man dann in die Funktion (hier beenden()) alles reinstopfen kann, das noch vorm erledigen gemacht werden muss.

    Ich weiß nicht, ob du cin und cout kennst, gefällt mir aber besser.

    MfG
    __charlie__



  • schreib hinter dem return 0; einfach

    getchar();

    müsste dann so aussehen bei dir:

    #include <stdio.h>
    int main()
    {
        int a;
    
        printf("Bitte machen Sie eine Eingabe!\n");
        scanf("%i",&a);
        printf("%i",a);
    
        return 0;     
    
        getchar(); 
    }
    

    Dann wartet das Programm solang mit dem Beenden, bis du ein Taste gedrückt hast.



  • Slawo schrieb:

    schreib hinter dem return 0; einfach

    getchar();

    Hinter dem return 0; ist es Käse - wenn du etwas einfügen willst, dann vor dem return.



  • #include <stdio.h>
    int main()
    {
        int a;
    
        printf("Bitte machen Sie eine Eingabe!\n");
        scanf("%i",&a);
        printf("%i",a);
    
        getchar();
    }
    

    Das getchar(); bedeutet soviel wie, dass das Programm bei der letzten Ausgabe stehenbleibt. Durch Enter würde es dann beenden. Setzt dur return 0; unter das getchar, springt es bei einem Tastendruck auf Enter zum Anfang zurück.



  • 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.



  • namtam schrieb:

    Setzt dur return 0; unter das getchar, springt es bei einem Tastendruck auf Enter zum Anfang zurück.

    Nun erzähl den Leuten doch nicht solchen Unsinn - "return 0;" beendet die aktuelle Funktion (und wenn das die main() ist, damit das gesamte Programm. Da springt überhaupt nichts "zum Anfang zurück".



  • heist getchar nicht "hohle zeichen"
    und nicht getenter. 😉



  • Hallo fr3ax,

    Wenns nach mir geht sollte dein Code so aussehen:

    #include <stdio.h>
    #include <conio.h>   // getch();
    int main()
    {
        int a;
    
        printf("Bitte machen Sie eine Eingabe!\n");
        scanf("%i",&a);
        printf("%i",a);
    
        getch();          // mit ENTER schliesst sich das DOS-Fenster
        return 0;      
    }
    

    Bin mir nicht ganz sicher, ich dacht für getch(); benötigt man die Headerdatei conio.h . Ist sie nicht included funktionierts bei mir nicht.
    Das mit dem "das Programm wiederholt sich" ist nicht richtig. Dafür müsstest du die ganze Abfrage in ein "while" oder "do while" schleife schreiben.
    BSP:

    #include <stdio.h>
    #include <conio.h>   // getch();
    int main()
    {
        int a;
        do
        {
         printf("Bitte machen Sie eine Eingabe!\n");
         scanf("%i",&a);
         printf("%i",a);
        }    
        while(a!=0);      // Die Bedinung kannst du natürlich selber auswählen
    
        return 0;      
    }
    

    Bin Anfänger in C, hoffe trotzdem, dass ich ein bisschen weiterhelfen konnte.

    Gruss jago.ch

    EDIT 18.02.06 23:41

    In der conio.h steht folgendes: _CRTIMP int __cdecl _getch (void);
    scheint, als hätte sie etwas mit getch zu tun :-P.



  • Das ist ja grausam was hier teilweise vorgeschlagen wird: 😮

    getchar() nach dem return
    sytem("PAUSE") mit atexit()

    Man könnte das "Problem" ganz einfach vermeiden, indem man KONSOLEN-Programm auch in der KONSOLE ausführt.

    Und wenn man das nicht machen will, dann gibts, wie von CStoll schon erwähnt, in der Konsolen-FAQ einen schönen Beitrag wie man es gescheit macht.


Anmelden zum Antworten