“Schöne Zahlen machen”
Samstag, November 29th, 2008Bin eben auf einen Interessanten Quelltext gestoßen:
static char *nice_num(long n)
{
int neg = 0, d = 3;
char *buffer = prtbuf;
int bufsize = 20;
if (n < 0)
{
neg = 1;
n = -n;
}
buffer += bufsize;
*--buffer = '\0';
do
{
*--buffer = '0' + (n % 10);
n /= 10;
if (--d == 0)
{
d = 3;
*--buffer = ',';
}
}
while (n);
if (*buffer == ',') ++buffer;
if (neg) *--buffer = '-';
return buffer;
}
Kennt man sich mit C nicht so aus braucht man schon ein Minütchen oder zwei um das zu verdauen.
Diese Funktion fügt Trennkommata in eine Zahl ein – also wird aus 123456789 -> 123,456,789 und hängt weiterhin noch ein ‘-’ vor die Zahl sollte diese Negativ sein.
Das ganze läuft von rechts nach links ab. Erst der String Terminator ‘\0′. Dann wird jede ziffer via Modulo 10 um eine Stelle verschoben. Nach 3 Verschiebungen wird dann ein Komma eingefügt. Zum guten Schluss wird dann das ‘-’ eingefügt.
Irgentwie vermisse ich das Praktikum “Hardwarenahes Programmieren” und BÄRBEL Chess

