Frage zu einem C-Code
-
Hi, erstmals vielen Dank für den Tipp. Hatte ich auch schon ausprobiert. Doch dann übernimmt er alles was ich eingegeben habe, egal ob Zahlen oder Buchstaben. Wie gesagt, jetzt geht es aufeinmal. Siehe meinen ersten Beitrag.
Trotzdem vielen Dank. Wirklich sehr nett.
Gruß
Dave
-
Hmm, du hast Recht. Meine Variante funktioniert nicht, deine funktioniert bei mir allerdings auch nicht, obwohl sie sollte. Strange...
EDIT: Und deine Vorgehensweise, das "[0-9]" einfach zu löschen und nochmal hinzuschreiben HAT TATSÄCHLICH FUNKTIONIERT (VS2005)! Das soll einer verstehen...
Und das Phänomen trat auf, da ich deinen Code kopiert hatte. Vielleicht hat sich ein nicht druckbares Zeichen darunter gemischt oder so...
-
_matze schrieb:
Hmm, du hast Recht. Meine Variante funktioniert nicht, deine funktioniert bei mir allerdings auch nicht, obwohl sie sollte. Strange...
EDIT: Und deine Vorgehensweise, das "[0-9]" einfach zu löschen und nochmal hinzuschreiben HAT TATSÄCHLICH FUNKTIONIERT (VS2005)! Das soll einer verstehen...
Und das Phänomen trat auf, da ich deinen Code kopiert hatte. Vielleicht hat sich ein nicht druckbares Zeichen darunter gemischt oder so...
Das '-' war bei mir ein Unicode-Zeichen, also ich den Code kopiert hatte.
Gruß mcr
-
^^das '-' ist ein 0x96. das echte '-' wäre ein 0x2d gewesen.
ist schon doof, wenn webbrowser auch nicht-ascii zeichen anzeigen können.
-
Wenn ich deine scanf-Zeile in HTerm (Terminal-Programm) kopiere, dann fehlt das "-"! Keine Ahnung, wie du das geschafft hast... aber sehr interessant!
-
Ah, Unicode. Ok...
-
Hallo zusammen,
ich hätte eine weitere Frage an Euch.
Wie könnte ich hier noch mit einbauen, daß wenn man Buchstaben anstatt Ziffern eingibt, es ebenfalls zur Meldung:"Falsche Eingabe! Bitte wiederholen: " kommt.
Das funktioniert bisher nur, wenn man entweder 0 oder alles was über 5 liegt, eingibt. Sobald ich testweise einen Buchstaben eingebe, kommt es zu einer Endlosschleife.do { printf("\n\n Bitte ausw\204hlen: "); scanf("%i", &menuepunkt); if ((menuepunkt <= 0) || (menuepunkt >=6)) printf("\a Falsche Eingabe! Bitte wiederholen: "); } while ((menuepunkt <= 0) || (menuepunkt >=6));
Über einen Tipp wäre ich sehr dankbar.
Gruß Dave
-
-
Danke für die Antwort, aber mit diesem Link kann ich leider nichts anfangen.
Ich bin noch nicht soweit.Ich schreibe gerade ein einfaches Programm zur Übung.
In diesem Programm kann man zu Beginn aus einem Menue, daß aus fünf Menuepunkten besteht, auswählen.1. xxx
2. yyy
3. vvv
4. ppp
5. nnnBitte auswählen: .
Mit der do while Schleife will ich erreichen, daß das Programm nur dann fortgesetzt wird, wenn die Eingabe einem Menuepunkt entspricht. Bisher klappt das aber nur mit
den Ziffern. Sobald ein Buchstabe eingegeben wird, kommt es zu einer Endlosschleife.
Kann ich die do while Schleife so erweitern, daß das Programm auch mit der Eingabe von Buchstaben nicht weiterläuft, oder wie muss ich das machen?Dankeschön.
Gruß
Dave
-
der link: da hat einer das gleiche anliegen wie du. er möchte auch nicht, das buchstaben, sondern nur zahlen eingegeben werden.
die endlosschleife kannst du verhindern, indem du den eingabepuffer leer machst.wenn du deine menüpunkte auch mit buchstaben machen willst, dann musst du buchstaben oder zeichenketten einlesen und mit den menüpunkten vergleichen, z.b. mit strcmp
-
Hi Kuckuck,
recht vielen Dank, man. Ich habe einfach wie du es gesagt hast, den Eingabepuffer leer gemacht und jetzt geht es wunderbar.
do { printf("\n\n Bitte ausw\204hlen: "); scanf("%i", &menuepunkt); fflush(stdin); //wie du es gesagt hast :live: if ((menuepunkt <= 0) || (menuepunkt >=6)) printf("\a Falsche Eingabe! Bitte wiederholen: "); } while ((menuepunkt <= 0) || (menuepunkt >=6));
Echt vielen Dank, wirklich.
Gruß
Dave
-