Cでscanfを使わずにスペース区切りの二つの整数を読み込むコードが想定通りに動かない


Cでscanfを使わずにスペース区切りの二つの整数を読み込むコードを書きたいのですが、二つ目の数が正確に読み込めないです。  
(１つ目の数をかけた数になっている模様。)  
原因がわかりません。

[code]

    int readint(char *s);
    #include<stdio.h>
    #include<stdlib.h>
    #define N 1000000100
    int main(void){
        char* s=(char*)malloc(sizeof(char)*N);
        fgets(s,N,stdin);
        int n=readint(s);
        int i=0;
        while(*(s+i)!=32)i++;
        i++;
        int d=readint(s+i);
        free(s);
        printf("%d %d\n",n,d);
        return 0;
    }
    int readint(char *s){
        int i=0,ret=0;
        while(*(s+i)>=48 && *(s+i)<=57){
    //        printf("%d\n",*(s+i));
            ret*=10;
            ret+=(ret+*(s+i)-48);
            i+=1;
        }
        return ret;
    }
    
[/code]




22行目が間違っています。

誤：

[code]

        ret+=(ret+*(s+i)-48);
    
[/code]

正：

[code]

        ret+=*(s+i)-48;
    
[/code]




22行目が間違っています。

誤：

[code]

        ret+=(ret+*(s+i)-48);
    
[/code]

正：

[code]

        ret+=*(s+i)-48;
    
[/code]

