Eingabeüberprüfung Verständniss



  • dies hält aber nur davon ab das ich mehr als 1 Zeichen nicht eingeben darf oder? Also wenn ich einen Buchstaben eingebe wird bei mir das erste Case angesteuert.



  • Der Rückgabewert von scanf enthält die Anzahl erfolgreich eingelesener Felder. Wenn scanf in deinem Fall etwas anderes als 1 zurückgibt, ist ein Fehler aufgetreten. Also ein Buchstabe statt einer Ziffer zum Beispiel.



  • i enthält (hier) aber nicht den Rückgabewert von scanf .
    Wenn scanf keine vernünftige Eingabe für i vofindet, bleibt i unverändert.
    Da i hier nicht initialisert ist, ist es Zufall was da zuerst drin steht.

    Du kannst vor dem scanf i eine 0 zuweisen.



  • Habe glaube gelesen, dass bei C++ (im gegensatz zu C) die Werte bei Definition implizit initialisiert werden?



  • deejey schrieb:

    Habe glaube gelesen, dass bei C++ (im gegensatz zu C) die Werte bei Definition implizit initialisiert werden?

    Selbst wenn das so wäre, hier geht es um C.



  • stimmt, mein Fehler



  • eine kleine Frage noch zum verständniss. Was genau heißt hier !='\n' das Ausrufezeichen? Es ist ein Non - Operator der ja nur false or true annehmen kann. Aber was genau tut er? Wie erkennt er das ? Und wan ist es sinnvoll diesen einzusetzen? tut mir leid wen ich so viele Fragen stelle aber ich möchte genau wissen was ich dahin schreibe. Ich versuch irgendwie den Logischen einsatz von Zeichen verstehen was die genau tun.



  • Das ist != (Ausrufe-Gleicheitszeichen) und steht für den Vergleich auf Ungleichheit.



  • alles kla dankeschön. Ich hab das Programm jetz fertig geschrieben aber 1 Sache fehlt da noch. Ich möchte gerne dem nutzer die Möglichkeit geben seine Entscheidung wieder rückgangig zumachen. ZB der Nutzer wählt die 1 zur Berechnung und möchte nun seine Entscheidung auf 2 setzen. Das heißt das Programm müsste in der Lage sein ein Schritt zurückzumachen. Wie setz ich sowas genau ein? mit break , continoue oder doch das return?

    mfg Speedy



  • Solange der Nutzer die Entertaste noch nicht gedrückt hat, kann er editieren.
    Danach ist die Eingabe gültig.

    Was du dann in deinem Programm machst, ist deine Sache.

    break verlässt eine Schleife oder switch-Anweisung
    continue geht direkt zum nächsten Schleifendurchlauf
    return verlässt eine Funktion

    Ohne Schleife bringt das nicht viel.

    Eine idiotensichere Eingabe ist nicht trivial zu machen.

    Fragen wie "Wollen sie nochmal die Eingabe ändern" sind lästig.
    Du brauchst ein Menüsystem oder eine GUI (geht auch als Text, z.B. mit ncurses)


Anmelden zum Antworten