Fehleingaben abfangen



  • Hallo, ich krieg irgendwie die Suchfunktion des Forums nicht zum Laufen und hab grad leider nicht die Zeit an meinen Browser-Einstellungen zu schrauben. Ich bitte also um Nachsicht, wenn es meine Frage schon mal gab.

    Hat jemand eine einfache Lösung, wie man Fehleingaben des Benutzers abfangen kann?

    Beispiele:

    - Der Benutzer soll eine natürliche Zahl eingeben, gibt aber eine Gleitpunktzahl ein.
    - Der Benutzer soll ein Wort eingeben, gibt aber eine Zahl ein.
    - etc.

    Ich habe in den Standard-Bibliotheken nur Funktionen gefunden, die einzelne Zeichen überprüfen, aber ich bräuchte etwas, das auch mit mehrstelligen Eingaben funktioniert. Danke!


  • Mod

    FatalExit schrieb:

    Ich habe in den Standard-Bibliotheken nur Funktionen gefunden, die einzelne Zeichen überprüfen, aber ich bräuchte etwas, das auch mit mehrstelligen Eingaben funktioniert. Danke!

    Dann musst du selber eine Funktion schreiben, die eben dies erledigt.

    Hallo, ich krieg irgendwie die Suchfunktion des Forums nicht zum Laufen und hab grad leider nicht die Zeit an meinen Browser-Einstellungen zu schrauben.

    Dein Browser ist wahrscheinlich in Ordnung, derzeit funktioniert aber nur die Suche "powered by Google", also das obere der drei Suchfelder.



  • SeppJ schrieb:

    Dein Browser ist wahrscheinlich in Ordnung, derzeit funktioniert aber nur die Suche "powered by Google", also das obere der drei Suchfelder.

    Das wird bei mir nicht angezeigt. Es liegt an meinen Browser-Einstellungen, an denen ich viel geändert habe. Dass einige Seiten damit nicht mehr reibungslos laufen ist normal. Die Mühe, die wieder zum Laufen zu kriegen, nehme ich gerne in Kauf, habe aber leider vor morgen Abend nicht die Zeit, mir die mit der Suchfunktion hier zu machen.

    SeppJ schrieb:

    Dann musst du selber eine Funktion schreiben, die eben dies erledigt.

    Willst du mich auf den Arm nehmen? Da mein IQ nicht einstellig ist, ist mir natürlich bewusst, dass eine Funktion, die es noch nicht gibt, geschrieben werden muss. Die Frage ist, ob jemand eine Idee für eine solche Funktion hat. Sorry, ich will hier keinen Streit austragen, aber ich möchte auch nicht wie ein Idiot behandelt werden. Ich habe eine ganz normale Frage gestellt.

    Die besteht natürlich weiterhin. Hat jemand eine Idee?



  • Ich habe eine Idee:
    Nimm die Eingabe entgegen und benutze die Funktionen, die Du in der Standard-Bibliothek zur Überprüfung einzelner Zeichen gefunden hast, um festzustellen, ob die Eingabe ausschließlich aus zulässigen Zeichen besteht.



  • Belli schrieb:

    Ich habe eine Idee:
    Nimm die Eingabe entgegen und benutze die Funktionen, die Du in der Standard-Bibliothek zur Überprüfung einzelner Zeichen gefunden hast, um festzustellen, ob die Eingabe ausschließlich aus zulässigen Zeichen besteht.

    Da diese Funktionen, wie gesagt, nur mit einzelnen Zeichen funktionieren, also mit Eingaben wie "123" nichts anfangen können, kann ich die nicht so einfach verwenden. Das ginge - meinen bescheidenen Kenntnissen nach - nur mit einer Funktion, die die Eingabe in einzelne Zeichen stückelt und diese dann nacheinander an die Prüffunktionen (z.B. isdigit()) übergibt. Wäre das vielleicht möglich, indem man die Eingabe in ein Array schreiben lässt und dann in einer Schleife die einzelnen Arraystellen an die Prüffunktion übergibt? Aber wie sähe die Funktion aus? Ich habe, wie gesagt, gerade überhaupt keine Zeit, sonst würde ich einfach eclipse anschmeißen und so lange herumprobieren, bis ich 'ne gute Lösung gefunden habe. Da ich aber morgen eine Klausur schreibe, habe ich jetzt leider nicht die Zeit, lange herumzuexperementieren. Für die Klausur könnte ich die hier erfragte Fehler-Abfang-Funktion gut gebrauchen, aber sie ist nicht so wichtig, dass es sich lohnen würde, die wenige noch verbleibende Lernzeit dafür aufzuwenden langwierige Experimente zu machen. Kurz gesagt: Wenn sich hier jemand so gut mit C auskennt, dass es ihm/ihr keine große Mühe bereiten würde, ein paar Zeilen Code zur Lösung meines Problems zu schreiben, wäre ich für die Hilfsbereitschaft dankbar. Alles, das wie dein Beitrag ein Wink in eine Richtung ist, ist sicherlich gut gemeint, und ich bedanke mich dafür, aber einfach aus den besagten Zeitgründen würde nur eine (halbwegs) fertige Lösung mir wirklich noch bis morgen helfen können.



  • Wielange kanntest du deinen Klausurtermin?
    Gehe mal davon aus, dass
    - (edit: fast) jeder Antworter hier das schnell hinschreiben könnte
    - du nicht der Erste bist, der "ganz schnell" ein Lösung braucht "ohne lange rumzuprobieren"
    - keiner Lust hat, für dich deine Aufgaben zu lösen bloß weil du dein Zeitmanagement nicht beherrscht



  • Was spricht gegen scanf?



  • Wutz schrieb:

    Wielange kanntest du deinen Klausurtermin?
    Gehe mal davon aus, dass
    - (edit: fast) jeder Antworter hier das schnell hinschreiben könnte
    - du nicht der Erste bist, der "ganz schnell" ein Lösung braucht "ohne lange rumzuprobieren"
    - keiner Lust hat, für dich deine Aufgaben zu lösen bloß weil du dein Zeitmanagement nicht beherrscht

    Mit deiner arroganten Zurschaustellung angeblicher Überlegenheit in Kombination mit haltlosen Unterstellungen und der Verweigerung von Hilfe, die dich nach eigenen Angaben keinerlei Mühe kosten würde, entlarfst du nur deinen Mangel an Sozialkompetenz, sonst nichts. Gratuliere.

    EDIT:

    mgaeckler schrieb:

    Was spricht gegen scanf?

    Da nimmt der Compiler bei Fehleingaben implizite Typumwandlungen vor. Das hilft mir nicht bei meinem Problem, aber danke für die Antwort (das meine ich in deinem Fall nicht ironisch).


  • Mod

    FatalExit schrieb:

    Da nimmt der Compiler bei Fehleingaben implizite Typumwandlungen vor.

    Der Compiler kann in die Zukunft gucken und während des Übersetzens schon wissen, dass der Anwender etwas falsch eingeben wird? Was ist, wenn man das Programm zwei mal starten wird und jeweils was unterschiedliches eingeben wird? Wie bereitet der Compiler das Programm darauf vor?

    Da diese Funktionen, wie gesagt, nur mit einzelnen Zeichen funktionieren, also mit Eingaben wie "123" nichts anfangen können, kann ich die nicht so einfach verwenden. Das ginge - meinen bescheidenen Kenntnissen nach - nur mit einer Funktion, die die Eingabe in einzelne Zeichen stückelt und diese dann nacheinander an die Prüffunktionen (z.B. isdigit()) übergibt. Wäre das vielleicht möglich, indem man die Eingabe in ein Array schreiben lässt und dann in einer Schleife die einzelnen Arraystellen an die Prüffunktion übergibt?

    Ja.

    Aber wie sähe die Funktion aus?

    In einer Schleife die einzelnen Arraystellen an die Prüffunktion übergeben.

    Ich habe, wie gesagt, gerade überhaupt keine Zeit, sonst würde ich einfach eclipse anschmeißen und so lange herumprobieren, bis ich 'ne gute Lösung gefunden habe. Da ich aber morgen eine Klausur schreibe, habe ich jetzt leider nicht die Zeit, lange herumzuexperementieren.

    Tja.



  • FatalExit schrieb:

    mgaeckler schrieb:

    Was spricht gegen scanf?

    Da nimmt der Compiler bei Fehleingaben implizite Typumwandlungen vor. Das hilft mir nicht bei meinem Problem, aber danke für die Antwort (das meine ich in deinem Fall nicht ironisch).

    Dann nimm sscanf. Erst Zeile mit fgets einlesen dann mit mehreren Aufrufen von sscanf die Zeile gegen verschiedene Formate testen.

    Mfg Martin
    P.S. Die Bemerkungen der anderen haben nix mit fehlender Sozialkompetenz zu tun. Hier gibt es einfach immer wieder leute, die meinen, sie könnten ihre hausaufgaben delegieren.



  • FatalExit schrieb:

    ...scanf...
    Da nimmt der Compiler bei Fehleingaben implizite Typumwandlungen vor.

    Ach? Wo hast du das gelernt?
    Du hast (nach eigenen Angaben) keine Ahnung von C, weißt aber ganz genau, wie scanf arbeitet?
    Deine Annahmen, was C kann oder 'implizit' macht, sind pubertär, deine naiven Provokationen, um mich oder andere doch noch zu Komplettlösungen zu bringen, nur weil du selbst zu faul bist, sind hier auch nicht neu, gehe davon aus, dass du auch hierbei nicht der Erste bist der auf diese Weise hier kostenlos seine Hausaufgaben gemacht bekommen will.


Anmelden zum Antworten