麻烦详细解释一下代码逻辑 看不太懂,谢谢大神

//输入字符串判断该字符串是否存在数字字符串
#include
int fun(char *str,long int *num);

void main()
{
char str[50];
long int num[10]={0};
int total=0;
printf("input string : \n");
gets(str);
total=fun(str,num);
printf("total=%d",total);
while(total>0)
{
printf("\n%ld",num[--total]);
}
}

int fun(char *str,long int *num)
{
int i=0,flag=0, wz=1, n=0, k=0;
char temp[50];
do
{
while(str[i]>='0' && str[i]<='9')
{
temp[k++]=str[i];
flag=1;
i++;
}

    if(flag==1)
    {   
        while(--k>=0)
        {
            num[n]=(temp[k]-'0')*wz+num[n];
            wz*=10;
        }
    k=0;
    n++;
    flag=0;
    wz=1;
    }
}
  while(str[i++]);
    return n;

}

哪部分不懂标注一下,你这是全部都不懂吗。最好的方式就是多printf,哪里不明白就输出,然后再看