Forum: Mikrocontroller und Digitale Elektronik Zahl in Ziffern aufspalten


von joachim (Gast)


Lesenswert?

Hi

Hat jemand eine Idee für eine möglichst kurze C-Anweisung bei der eine
Zahl von z.b.: 51410 in folgende Ziffern aufgespaltet wird?:

5, 1, 4, 1, 0

Das ganz soll in einem Arrey abgespeichert werden

mfg Joachim

von Christian (Gast)


Lesenswert?

Mit dem Modulo Operator % und etwas Subtrahieren.

Oder einfach über / (integer) und etwas Subtrahieren.

von D. W. (dave) Benutzerseite


Lesenswert?

Mit Bibliotheksfunktionen: ltoa() und 0x30 abziehen.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Mit dem Modulo Operator % und etwas Subtrahieren.
>Oder einfach über / (integer) und etwas Subtrahieren.

Oder man benutzt einfach den "%"- und den "/"-Operator...

51410 % 10 = 0
51410 / 10 = 5141

5141 % 10 = 1
5141 / 10 = 514

514 % 10 = 4
514 / 10 = 51

51 % 10 = 1
51 / 10 = 5

5 % 10 = 5
5 / 10 = 0

So baut man sich das Arr_a_y von hinten nach vorne auf.
In der K&R-C-Bibel ist ein entsprechendes Beispiel sogar mit
Rückumformung drin...
Wenn man allerdings weiß, wie viele Stellen die Zahl maximal haben
kann, kann man das Feld auch von hinten nach vorne aufbauen. Dann hat
man u.U. ein paar führende Nullen.

von Peter (Gast)


Lesenswert?

sprint(...

von johnny.m (Gast)


Lesenswert?

@Peter:
Naja, man kann auch mit Kanonen auf Spatzen schießen. Wenn man in so
einem Fall unbedingt eine Bibliotheksfunktion verwenden will, dann
besser itoa, die hat nämlich nicht den ganzen Overhead...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.