Erkennung ungültiger Werte bei scanf-Eingabe
-
Hallo Leute!
Lustig, ich schreibe auch gerade an einem Math-Programm und wolte soeben genau die selbe Frage stellen:
Ich arbeite gerade an Thermen mit Klammern.
was ich möchte ist, dass wenn die erste eingabe keine zahl ist (was ich überprüfen können möchte)der wert in ne char variable eingelesen wird.
Die einzige Möglichkeit die ich kenne ist ungets?
Hier meine Frage:
Kennt jmd eine andere möglichkeit als ungets?
Kann mir jmd zu ungets oder der anderen möglichkeit einen codeschnipsel zeigen?
geht das mit if (a= int (a)) oder so?
Vielen Dank
-
Am besten du liest erstmal in einen String und prüfst dann ab.
int zahl; char buffer[80]; gets(buffer); if (sscanf(buffer, "%d", &zahl) == 1) { // Na prima; user hat eine Zahl eingegeben ... } else { // Was sitzt denn da für ein Trottel vor dem Monitor :-(, egal char c = buffer[0]; ... }
-
sorry aba das check ich nicht, gibts da auch was ohne strings??
irgendeiner hat mal so gschrieben dass man nen abgleich so wie oben bereits beschrieben ausführen kann,prich mit: if (a=int (a)) oda soIs echt wichtig da ich sonst nicht weiterkomme.
Oder hat jmd ne andere lösung?
ich will wissen ob die eingaben ne klammer oder zahl ist.
Thx
-
parserbau, regulaere ausdruecke, context free grammars, parsing expression grammars, baeume, finite state machines,...
such dir was raus und fang mit lesen an, wenn du selbst einen string zu einem einen mathematischen ausdruck umformen willst.
hier etwas, das ich dazu gefunden hab:
http://www.codeproject.com/cpp/craf...erpreter_p1.asp
http://www.codeproject.com/cpp/craf...erpreter_p2.asp
http://www.codeproject.com/cpp/craf...erpreter_p3.aspcodeproject hat hauptsaechlich miese codes, aber dieser dreiteiler hat tiefe.
[ hinweis: dieser post ist identisch mit http://www.buha.info/board/showpost.php?p=370269&postcount=4 ]
-
Und dadurch sind die Links fehlerhaft kopiert worden.
-
da is kein projekt mehr, aba danke
-
k, es gibt ne ganz simple lösung
if (a==(float)a) und so weiter mit diesen abfragen in verschidenster zweierkombination ermöglichen mir das zu kontrollieren etc thx problem gelöst.
Das parsing dings hat so ziemlich gar nix geholfen weil es gar n soviel aufwand bedarf.
-
Javaner schrieb:
Dein Compiler ist nicht schrottig!
*snip*Stimmt, eher die Implementierung der Standardlib, wenn es nicht wie beschrieben funktioniert hätte. Oder?
Muss mich da erst mal zurechtfinden.
-
Nein, auch die ist nicht schrottig. CStoll hat sich einfach vertippt.
-
Es geht mir nicht darum, ob sich wer vertippt habe, sondern darum, ob ich einen "Fehler" richtig erkennen und einordnen konnte. Ich bin so ein neugieriger Egoist, ich weiss