In der Schleife falsche Eingabe ausschließen ausschließen



  • Hallo liebe Leute,

    ich habe folgendes Problem, und zwar stürtz das Programm ab wenn man in der Konsole einen anderen Buchstaben eingibt, so dass unendlich viel Mal "Ungültige Eingabe steht"

    hier ein Ausschnitt meines Programms

    char A;
    char B;
    
    printf("\nBitte waehlen Sie eine der beiden Möglichekeiten:\n");
    printf("A = Variante A \n B = Variante B");
    do 
    {
       scanf ("%d" , &wahl);                       
       if ( wahl == A || wahl == B) break;
       else printf("Ungültige Eingabe");
    }  while (wahl != G || wahl != Z );
    

    ich bitte um hilfestellungen.



  • Ach ja und noch was, ich habe sowohl char=wahl; als auch A und B als char definiert, weil es ja buchstaben sind, ist es richtig??



  • Und du hast noch ein Problem: du bist im falschen Unterforum, richtig wäre "ANSI C" -)

    In deinem kleinen Progrämmchen ist leider so einiges falsch:
    - falscher Parameter bei scanf: %c ist für char richtig (%d ist für int)
    - du fragst uninitialisierte Variablen ab, du willst sicherlich Konstanten (Zeichenliterale) benutzen: 'A', 'B' ...
    - was sind G und Z, ebenfalls char-Variablen (oder meinst du auch hier 'G' bzw. 'Z')?



  • das mit %c habe ich im nachhinhein auch bemerkt:S
    also g und z sind auch 'A' und 'B'.

    printf("\nBitte waehlen Sie eine der beiden Möglichekeiten:\n");
    printf("A = Variante A \n B = Variante B");
    do
    {
       scanf ("%c" , &wahl);                      
       if ( wahl == 'A' || wahl == 'B') break;
       else printf("Ungültige Eingabe");
    }  while (wahl != 'A' || wahl != 'B' );
    

    sieht das schon richtiger aus??



  • also so scheint alles richtig zu sein, nur ein kleines problem habe ich noch

    und zwar kriege ich in der Konsole den eintrag "ungültige Eingabe" bevor ich irgendetwas engegeben habe?
    was ist denn falsch?



  • Ferat schrieb:

    sieht das schon richtiger aus??

    Machen wir jetzt rätselraten?



  • Dieser Thread wurde von Moderator/in Dravere aus dem Forum C# und .NET in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ferat schrieb:

    und zwar kriege ich in der Konsole den eintrag "ungültige Eingabe" bevor ich irgendetwas engegeben habe?
    was ist denn falsch?

    Vermutlich ist Dein Tatstaturpuffer nicht leer. Überdies liefert scanf() einen int zurück. Für den reinen Vergleich stört das nicht, aber um z.B. EOF zu erkennen, brauchst Du den int. Kannst Du hier nachlesen.


Log in to reply