Use of arduino StringObject?

Your itoa() function is broken for non-negative numbers:

char* itoa(int a, char* buffer, unsigned char radix){
    if(a<0){
            *buffer = '-';
            a = -a;
    }
    ultoa(a, buffer + 1, radix);
    return buffer;
}

You probably want something like (I haven’t tested this):

char* itoa(int a, char* buffer, unsigned char radix){
    char *wrkbuf = buffer;
    if(a<0){
            *wrkbuf++ = '-';
            a = -a;
    }
    ultoa(a, wrkbuf, radix);
    return buffer;
}
1 Like