Abfrageschleife



  • Hi Leute!!

    Ich brauch eine Funktion mit der man zwei Zahlenwerte abgefragt werden, allerding soll der Benutzer die Möglichkeit haben anstelle des ersten Wertes Escape drücken zu können, um damit die Dateneingabe zu beenden.

    Bis jetzt bin ich so weit:

    do
            {
                i++;
                printf(" %i. Messwert:\n",i+1);
                printf("Drehzahl: ");
                ch=getch();
                if(ch==_esc)
                {
                    r=-1;
                }
                else
                {
                    ungetc(ch,stdin);
                    putch(ch);
                    scanf("%f",&r);
                    printf("Leistung: ");
                    scanf("%f",&p);
                }
                mw_rpm[i]=r;
                mw_p[i]=p;
                printf("\n");
            }while(r!=-1);
    

    Dabei wird allerdings beim 2. Durchlauf das 2. scanf() übersprungen und ich weiß nicht warum.
    Bin für jeden Tipp dankbar!!

    mfg MTM



  • Escape hat den Ascii Wert 27 und den Virtuellen Tastencode VK_ESC, glaube ich...



  • VK_ESCAPE

    MfG SideWinder



  • das ist bei mir so definiert, dass _esc = 27 ist, mir gefällt das nicht, wenn ich irgendetwas immer groß schreiben muss
    beim ersten Durchlauf funktioniert ja auch alles prima, nur eben ab dem 2. nicht mehr



  • Hmm eventl. liegt das an dieser ungetc-putch-Kombi was sollte die bezwecken? Dass der Puffer leer ist?

    MfG SideWinder



  • also die sache ist ja so geplant, dass das programm auf eine eingabe wartet. drückt man da escape ist die schleife beendet, drückt man aber etwas anderes, dann muss dieses zeichen ja wieder zurück in den puffer geschrieben werden, damit es vom scanf() mit eingelesen wird, sonst fehlt jedesmal die erste ziffer. dieses zurückschreiben soll ungetc() machen und putch() schreibt das zeichen einfach auf den bildschirm, damit man auch sieht, was man eingibt (wie das bei scanf() eben so ist). sorry, wenn mein programmierstil nicht wirklich sehr klar rüber kommt...


Anmelden zum Antworten