C语言 输入一串字符(包含多个正整数),对字符串中的整数进行求和,并且显示求和结果

调用的函数代码如下:
int f4(int sum)
{
char c[80];
int a[80]={0},i,j;
printf("输入一串字符(少于80个):");
gets(c);
i=0;j=0;sum=0;
while(c[i]!='\0')
{
if(c[i]>='0'&&c[i]<='9')
a[j]=a[0]*10+(c[i]-'0');

else 
{if(c[i-1]>='0'&&c[i-1]<='9')
{sum=sum+a[j];j++;}
}
i++;

}
printf("sum=%d",sum);
return 0;
}
运行之后

img


因该是sum=23,可是却是这样。

求解答

修改如下:


int f4(int sum)
{
    char c[80];
    int a[80] = { 0 }, i, j;
    printf("输入一串字符(少于80个):");
    gets(c);
    i = 0; j = 0; sum = 0;
    while (c[i] != '\0')
    {
        if (c[i] >= '0' && c[i] <= '9')
            a[j] = a[j] * 10 + (c[i] - '0');

        else
        {
            sum = sum + a[j]; j++;
        }
        i++;
    }
    if (a[j] != 0)
        sum = sum + a[j];

    printf("sum=%d", sum);
    return 0;
}