Eingabeprobleme



  • Hallo,

    ich habe folgendes Problem. Ich frage mit scanf("%s", var); einen string ab.
    solange eine bestimmte eingabe nicht erfolgt ist, wir die abfrage wiederholt

    scanf("%s", var);
    while(...)
    {
    printf("Fehler...
    scanf("%s", var);
    }

    Jetzt habe ich das Problem, dass Fehler direkt 2mal kommt, wenn die eingabe falsch war, wenn man dan wieder was falsch eingibt, kommt das ganze wieder 2 mal bevor es anhält und man was neues eingeben kann. Woran liegt das?

    Gruß
    Steven



  • das enterteichen liegt noch im Eingabepuffer. dieser muss geleert werden

    entweder mit fflush(stdin), geht aber nicht immer, d.h. ist unsicher oder besser mit

    while (getchar != '\n');
    


  • hallo,

    bei dem while bringt er mir 2 fehler:

    error C2446: '!=' : Keine Konvertierung von 'int' in 'int (__cdecl *)(void)'
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    error C2040: '!=' : 'int (__cdecl *)(void)' unterscheidet sich von 'int' in bezug auf die Anzahl vorgenommener Dereferenzierungen



  • upps, sorry

    while (getchar() != '\n');
    


  • Horst2 schrieb:

    entweder mit fflush(stdin), geht aber nicht immer, d.h. ist unsicher

    Es geht wohl mit dem Microsoft Compiler. Da ist das eine "Zugabe" die aber nicht dem Standard entspricht und genau deswegen nicht genommen werden sollte.

    Die imho beste Lösung ist es alle Eingaben (nicht nur Strings) mittels fgets() zu erledigen.


Anmelden zum Antworten