itoa関数の再帰版の再実装、負の値に対応

itoa関数の再帰版の実装 - (void*)Pないと

これですが、負の値のことをすっかり忘れてました。ということで再実装しました。

#include <stdio.h>

void myitoa (int n,char *s) {
    if(n){
        int i = 0;
        int l = n;
        while(l/=10){ i++; }
        
        myitoa(n/10,s);
        if(n<0){
            n *= -1;
            s[0] = '-';
            i++;
        }
        s[i] = n % 10 + '0';
        s[i+1] = '\0';
    }
}

int main (void) {
    char str[100];
    int n = -45678;
    
    myitoa(n,str);
    printf("%s",str);
}

毎回マイナス値の計算しているのでちょっと微妙かもしれませんがこうしないと検出できなかったのでやりました。

他にもっと良い再帰の実装方法があるとは思いますがとりあえず現状ではコレが精一杯ですね。