C-Programmieren Taschenrechner

Servus,
ich lerne momentan C zu programmieren.
Bin noch relativ am anfang und habe nun folgendes Problem.
ich wollte einen Taschenrechner erstellen.
Meines erachtens müsste er eigentlich funktionieren.

Warum funktioniert es nicht?
Und zusätzliche Frage: Zeile 9 heißt es
%*[\n\t]%c
Warum funktinoiert hier nicht einfach %c?

Den Code habe ich auf pastebin hochgeladen.
http://pastebin.com/Ur3jN8KA

Ich hoffe Ihr könnt mir weiterhelfen,
Vielen Dank schonmal
Gruß
Ben

Hi,

bitte übersetze immer mit Option -Wall. Dann hättest Du als erstes festgestellt, dass Du in scanf aufforderst, als int zu parsen, aber die Adresse eines float zum speichern bereitstellst. Die Bitmuster sind nicht kompatibel, d.h. schreibst Du das Bitmuster eines in in den Speicher eines float, dann kommt da sinnloses Zeug raus.

Nebenbei noch, das Ergebnis versuchst Du in der Ausgabe als double-Zahl zu formatieren, obwohl es als Single-Precision float angelegt ist.

man fprintf

Gruß, Lutz

Hallo,

%c hätte auch funktioniert,
%*[\n\t] unterdrückt
Space, newline und tab
vor dem Rechenzeichen.

@Andreas: Danke für die Erklärung!
allerdings, wenn ich nur %c hinschreibe, überspringt er mir die „operator eingabe“…ich weiß auch nicht warum er bei mir hier nichts einliest, wenn ich das nicht weglasse…

@Lutz: Danke, guter Tipp mit dem -Wall.
Deinen letzten Satz allerdings verstehe ich nicht.
„Nebenbei noch, das Ergebnis versuchst Du in der Ausgabe als double-Zahl zu formatieren, obwohl es als Single-Precision float angelegt ist“

Es heißt doch printf("%f",ergebnis) und dieses %f ist doch für float, oder?!

Vielen Dank schonmal
Lieben Gruß
Ben

Ja,

ist richtig, der Unterschied ist nur bei der Eingabe wichtig.

Gruß, Lutz