C语言 double转成int数组,发现个小问题。

下面这段代码是用C语言实现的,用来把double转成int数组。发现个小问题:
如果"a=12345670"的时候转换是ok的,如果"a=01234567"转换就有问题。
大家可以试一下,希望有人能解答一下为什么。

    double a = 12345670;
    char s]="";
    int *x;
    
    sprintf(s,"%.0lf",a);
    
    unsigned long len = strlen(s);
    x = (int*)malloc(sizeof(int)*len);
    
    for (int i=0; i<len; i++) {
        x*=s*-'0';
        printf("%d\n", x*);
    }
    
    free(x);
```***

c语言里,以0开头的都是8进制数,01234567 换算成十进制是342319,不知道你是不是这个结果