do-while Schleife



  • Hallo, folgendes Probelm hatte ich schonmal, nur weiss ich nichtmehr wie ich das damals gelöst habe.

    Es geht darum, dass ich bei folgendem Programm(noch unvollständig) eine komische Ausgabe erhalte

    int main()
    {
        int zaehler = 11;
        char passwort[] = "test";
        char buchstabe;
    
        do{
    
            printf("Geben Sie einen Buchstaben ein: ");
            scanf("%c", &buchstabe);
            printf("\n");
    
            zaehler--;
        }
        while(zaehler >0);
    }
    

    Als Ausgabe erhalte ich bisher:

    Geben Sie einen Buchstaben ein: D
    
    Geben Sie einen Buchstaben ein:
    Geben Sie einen Buchstaben ein:
    

    Es wird also die Zeiche "Geben Sie einen Buchstaben ein:" einmal zu oft aufgerufen.

    Wie schon gesgt, hatte ich dieses Problem vor geraumer Zeit schoneinaml (Evtl. wurde mir sogar hier damals weitergeholfen) nur weiss ich nichtmehr in welchem Programm das war bzw. welches Topic.

    Thx



  • Denkfehler meinerseits oder ist do-while da wirklich falsch? Warum kein einfaches while (oder for je nach Geschmack)?



  • Das '\n' von der Entertaste ist auch ein Zeichen.

    Wenn du es überlesen möchtest, dann mache ein Leerzeichen vor das %c (" %c").
    Damit überliest scanf erstmal alle Whitespace.



  • Vielen Dank. mit dem Leerzeichen funktionierts 👍


Anmelden zum Antworten