Frage

Im Moment arbeite ich mit einer SPS, die ANSI-C unterstützt, sondern nutzt seinen eigenen Geschmack des GNU-Compiler, der keine variadische Funktionen und Dinge wie itoa nicht kompiliert. Also mit sprintf & co. ist keine Option für ganze Zahlen in Strings konvertiert werden. Kann jemand auf eine Website leitet mich, wo eine robuste, sprintf- freie Implementierung von itoa aufgeführt ist oder einen geeigneten Algorithmus hier posten? Vielen Dank im Voraus.

War es hilfreich?

Lösung

Dies ist von K & R:

void itoa(int n, char s[])
{
    int i, sign;

    if ((sign = n) < 0)  /* record sign */
        n = -n;          /* make n positive */
    i = 0;
    do {       /* generate digits in reverse order */
        s[i++] = n % 10 + '0';   /* get next digit */
    } while ((n /= 10) > 0);     /* delete it */
    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';
    reverse(s);
} 

reverse() kehrt nur einen String.

Andere Tipps

Nur aus Gründen der Vollständigkeit und der als Referenz für andere, die auf das Thema stolpern kann, habe ich diesen Link auf eine rekursive Implementierung von itoa itoa rekursiv was ich wie wegen seiner einfachen Schönheit, kann aber nicht für mein Zielsystem verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top