Probleme beim Einbinden von Funktionen
-
Stimmt. d und i haben am Ende den gleichen Wert. Da stand ich wohl auf dem Schlauch, als ich das gemacht habe.
Und die Stellenanzahl, die mit c überprüft wird, habe ich dem Array schon angepasst (das ist mir aufgefallen, das mit d komischerweise nicht).
Und vielen dank für die ausführliche Schreibweise.
Die kompakte habe ich jetzt auf den ersten Blick nicht verstanden.
-
plumbum87 schrieb:
Die kompakte habe ich jetzt auf den ersten Blick nicht verstanden.
Die Sache mit dem Zeiger oder das return?
-
Um ehrlich zu sein: beides.
isdigit überprüft doch, ob die eingabe eine Zahl ist (wobei da auch float-zahlen mit gemeint sind) oder irre ich mich da? (bei mir hat isdigit übrigens auch ohne die Einbindung von <ctype> funktioniert
).
Ich habe es auch mal mit isdigit probiert, es aber dann wieder verworfen (eben weil es bei mir auch Komma-Zahlen durchgelassen hat, was ich hier nicht gebrauchen konnte).
-
digit = Ziffer
Ziffern und Zahlen sind ganz was unterschiedliches, auch wenn es auf den ersten Blick nicht so aussehen mag.
-
digit = Ziffer
Ziffern und Zahlen sind ganz was unterschiedliches, auch wenn es auf den ersten Blick nicht so aussehen mag.
Und wieder etwas gelernt.
Aber der Unterschied ist bekannt
-
isdigt
überprüft, ob das übergebene (einzelne) Zeichen eine Ziffer darstellt. Das was du mit deinem... >='0')&&( ...
machst.Das mit den Zeigern kommt noch.
Bei dem return habe ich ausgenutzt, das in C die Null (0) als "unwahr" bzw. "falsch" betrachtet wird. Alle anderen Werte werden als "wahr" oder "richtig" betrachtet.
Du kannst einen logischen Wert mit dem Nicht-Operator ! umdrehen. Aus 0 wird 1 und aus allem anderen wird 0.Das sich ein C-Programm nach dem Compilieren starten lässt, heißt noch lange nicht das es richtig ist, auch wenn es erstmal funktionieren mag.
Beachte auch unbedingt die Compilerwarnungen. Behandele sie wie Fehler und beseitige deren Ursache.
-
Wenn ich noch einen fiesen Einwurf machen darf: Folgendes sind auch übliche Zahlen: "-123", "-0". Aber nicht "1-2" oder "-". Mit etwas mehr Fantasie auch "012" (10, nicht 12!), "0xAB", aber nicht "08" oder "12x". Es hat schon einen Grund, wieso man das Zahlenparsen normalerweise nicht selber macht
.
-
Danke für die Erklärung.
Ich werde es mal ausprobieren (Das Programm ist zwar schon abgegeben, aber es ist gerade so produktiv hier).Mein Compiler hat allerdings keine Warnungen ausgegeben, deswegen habe ich es auch so stehen lassen.
Aber mein Compiler hat auch nichts gesagt, wenn das Programm hinterher nicht funktionierte (z.B. bei strl(*eingabe), was ja definitiv falsch war).
Vielleicht sollte ich mich doch nach etwas anderem umsehen.
-
Wie wahr
Aber mir war es für dieses Programm zu aufwändig, noch nach den korrekten Befehlen zu suchen (von den zusätzlichen #include ... Befehlen ganz zu schweigen).
Ich bin z.B. auf isint() gestoßen, was sehr vielversprechend klang, allerdings ist diese Funktion weder bei stdio.h noch bei stdlib.h enthalten. Ich konnte aber keine Info finden, was ich hätte laden müssen (hat da jemand einen Tipp für mich, wo man solche Infos finden kann? Vor ein paar Einträgen wurde ich zu cplusplus.com verwiesen)Wenn es später z.B. bei der Arbeit, mal nötig sein sollte, ein richtiges Programm zu schreiben um (was weiß ich...) Maschinenparameter auszulesen oder zu übergeben, werde ich mich da auf jeden Fall noch weiter einarbeiten.
-
Einmal kann man so etwas selber probieren.
Auch
strlen
ist nicht verkehrt, da es immer mal notwendig ist, selber durch einen String zu gehen.Mann kann den Warnungen ein-/ausschalten, bzw. den WArnlevel ändern.
Wo und wie hängt aber vom Compiler/IDE ab.