96686


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]


CC BY-SA 4.0
2023-11-05T12:54:14.770
96685
2023-11-05T13:48:42.043
2023-11-05T13:48:42.043
3060
54984
question
c
Cでscanfを使わずにスペース区切りの二つの整数を読み込むコードが想定通りに動かない


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

誤：

[code]

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

正：

[code]

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


CC BY-SA 4.0
2023-11-05T13:30:05.047
96686
2023-11-05T13:30:05.047
7291
96685
answer