cmd.exe problem



  • guten abend.
    ich habe vor ein paar tagen mit dem programmieren von c begonnen.
    habe sonst keinerlei kenntnisse. nun habe ich ein problem beim
    aussführen eines programms. ich programmiere nach diesem tutorial:
    Galileocomputing

    erst hatte ich das problem beim hello world programm, das sich
    das fenster nach wenigen millisekunden geschlossen hat. nach einer stunde
    googlen habe ich herausbekommen das ich statt return 0 getchar()
    verwenden kann da es auf einen knopfdruck wartet.
    jetzt bin ich in einem abschnitt wo ich eine eingegebene
    zahl wiedergeben muss.

    #include <stdio.h>
    int main (void)
    {
       int x;               //variable soll eingegebene zahl übernehmen
       printf("Bitte geben Sie eine Zahl ein : ");
       scanf("%d",&x);      // Wartet auf die Eingabe.
       printf("Die Zahl, die Sie eingegeben haben, war %d\n",x);
       return 0;
    }
    

    wenn ich nun die zahl eingebe und ENTER drücke schließt sich das fenster,
    anstatt meinen wert auszugeben. was kann ich tun? benutze vista 32.
    meine umgebung ist dev c++ und mein compiler ebenfalls.
    hoffe das mir jemand helfen kann!
    mfg tems



  • kannst du auch getchar vor return machen.
    wenn du dein programm über die eingabeaufforderung starten würdest, bräuchtest du kein getchar machen.

    🙂



  • das mit dem getchar vor return hilft auch nicht!
    und laut google ist cmd die eingabeaufforderung.
    oder gibt es noch was anderes?

    mfg tems


  • Mod

    tems schrieb:

    das mit dem getchar vor return hilft auch nicht!
    und laut google ist cmd die eingabeaufforderung.
    oder gibt es noch was anderes?

    auchso meint, dass du die cmd starten sollst und darin dein Programm dann aufrufst. Das ist nämlich bei Konsolenprogrammen die übliche Art und Weise, sie von der Konsole zu starten 🙂 .

    Ansonsten schau mal hier Punkt 2:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-151578.html

    Das ist zwar die FAQ für C++, aber vieles gilt auch für C.



  • Wenn du das mit getchar() machen willst, musst du vorher den Eingabepuffer leeren. Das geht unter Windows zwar meistens auch mit fflush(stdin), ist aber nicht portabel und nicht im Standard definiert. Ich würde es so machen:

    #include <stdio.h>
    
    void erase_buffer(void)
    {
        int c; // int c, nicht char c.
        while ((c = getchar()) != EOF && c != '\n'); // kein {} block, stimmt so
    }
    
    int main (void)
    {
        int x;               //variable soll eingegebene zahl übernehmen
        printf("Bitte geben Sie eine Zahl ein : ");
        scanf("%d",&x);      // Wartet auf die Eingabe.
        printf("Die Zahl, die Sie eingegeben haben, war %d\n",x);
        erase_buffer();
        getchar();
        return 0;
    }
    

    EDIT: so ist es noch ein bisschen eleganter:

    #include <stdio.h>
    
    void wait_for_key(void)
    {
        int c; // int c, nicht char c.
        while ((c = getchar()) != EOF && c != '\n'); // kein {} block, stimmt so
        getchar();
    }
    
    int main (void)
    {
        int x;               //variable soll eingegebene zahl übernehmen
        printf("Bitte geben Sie eine Zahl ein : ");
        scanf("%d",&x);      // Wartet auf die Eingabe.
        printf("Die Zahl, die Sie eingegeben haben, war %d\n",x);
        wait_for_key();
        return 0;
    }
    


  • vielen dank, das mit dem direkt starten hat geklappt 😃
    das faq bereitet mir kopfschmerzen, aber ich brauche es ja noch nicht.
    danke danke danke mfg tems 👍


Anmelden zum Antworten