problem mit getch



  • Hallo

    Ich habe folgendes problem ich möchte ein menü mit hilfe der switch anweisung in der win 32 konsole programmieren.
    um eine taste einzulesen habe ich eine extra funktion geschrieben die ein char also das zeichen (taste) die gdrückt wurde zurück gibt.
    das problem ist aber dass das programm direkt nach den kompilieren beendet wird da schon ein zeichen im puffer steht. Das kann ich mir nicht erklären da ich zu aller erst den puffer mit fflush(stdin) löschen und dann auf eine eingabe warte.
    hier mal mein code:

    [code]

    #include <cstdlib>
    #include <iostream>
    #include <conio.h>

    using namespace std;
    char readKey(void);

    int main(int argc, char *argv[])
    { fflush(stdin);
    printf("%d",readKey);

    system("PAUSE");
    return EXIT_SUCCESS;
    }
    char readKey(void)
    {
    char key = 0;

    //eingabe Puffer löschen
    //fflush(stdin);
    warte bis taste gedrückt wurde
    //while(!kbhit());
    if(kbhit())
    //zeichen aus Puffer holen und in Key variable schreiben
    key = getch();
    //eingelesenes zeichen aus dem Puffer holen.
    return key;

    }

    hat mir villeicht jemand ein menü das ich mir das mal anschauen kann.
    Ich möchte ein hauptmenü schreiben von dem mann in untermenüs springen kann.
    In die untermenüs reinspringen ist kein problem aber ich möchte durch drüchen der taste q wieder ein menü höher springen. wie mache ich das ohne den goto befehl zu verwenden ?

    danke für euere hilfe

    gruß

    gizmo



  • 1. Bitte cpp-Tags benutzen, zur besseren Lesbarkeit!

    2. fflush(stdin) ist nicht so toll, da MS-only und absolut nicht standardkonform. Es gibt bessere Lösungen. Such über die Forensuche mal nach "Eingabepuffer leeren".

    3. Leere den Eingabepuffer nochmal nach der printf-Anweisung.


Log in to reply