求查代码错误,获取字符串中的两位数字

代码要求获取字符串里面的两位数字,比如输入nums=(13,24,8,25),应该输出 13 24 8 25,但是下面这段代码有问题,求指出问题

#include "stdio.h"
int main()
{
char str[30];
int i,j=0,a[15],cnt=0;
scanf("%s",&str);
for(i=0;i<=29;i++)
{
if(str[i]>='0'&&str[i]<='9'&&str[i+1]<'0'&&str[i+1]>'9')
{
a[j]=(str[i]-'0');
i++;
j++;
}
if(str[i]>='0'&&str[i]<='9'&&str[i+1]>='0'&&str[i+1]<='9')
{
a[j]=10*(str[i]-'0')+(str[i+1]-'0');
j++;
i++;
}
if(str[i]=='\0')
break;
}
for(i=0;i<j;i++)
{
printf("%d",a[i]);
}
return 0;
}

代码要求获取字符串里面的两位数字,比如输入nums=(13,24,8,25),应该输出 13 24 8 25
为啥要输出8呢?