Eingabe in einer Schleife



  • Hi Leute,

    schaut euch mal den Code an:

    #include <iostream>
    
    int main()
    {
        // deklarieren der benötigten Variablen
        int i;
        char satz[255], weitere;
    
        // Sätze eintragen
        do
        {
            // Eingabe des Satzes
            std::cout << "Satz: ";
            std::cin.get(satz, 255);
    
            ...
    
            // Abfrage, ob mehr Sätze eingetragen werden sollen
            std::cout << "Weitere Sätze? ";
            std::cin >> weitere;
        } while(weitere == 'j' || weitere == 'J');
    
    	return 0;
    }
    

    Wenn ich den starte, dann gebe ich den Satz ein und da ich noch einen Satz eintragen möchte gebe ich ein j ein. Nun spinnt das Programm rum und läuft die ganze Zeit durch. Ich kann nichts mehr machen außer das Programm zu beenden. Wie kann ich den Durchlauf verhindern? Danke schonmal...

    MfG Apo



  • das std::cin >> bla lässt das newline im buffer liegen, deswegen musst du es vor der eingabe mit get ignorieren:

    std::cin.ignore(); // ignoriert ein zeichen
    

    oder gleich den ganzen buffer leeren:

    std::cin.sync();
    

    mfg.



  • Aso..., okay! Danke..., es funktioniert nun.

    MfG Apo


Anmelden zum Antworten