自定义函数使用递归没有结果


/* 
    程序功能:
            判断输入的字符串是否是int型正整数型,并分组 
 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
int chk_data(char *num);
int num[SIZE];
struct fu
{
     char b[SIZE];//存放运算符
    int c[SIZE];//存放运算符位置 
}sign;
int i=0,k=0,j=0,l=0;
    int m[SIZE]={0},x;
    int a[SIZE];//存放数字
    int e=1;


int main(void)
{
    char str[SIZE];   //定义一个大小为SIZE的char型数组
   
   int answer;
    printf("input :");       
    scanf("%s", str);       
    for(i=0;str[i];i++) 
    {
        if (chk_data(&str[i]) == 0) 
        {
            sign.b[j++]=str[i];  
            sign.c[l++]=i;
        }
        else
        {
            a[k++]=str[i]-'0';   
        }
    }printf("%d\n",j);
   for (i = 0; i < k; i++)
   {
       printf("数字%d  ",a[i]);
   }
    for (i = 0; i < j; i++)
    {
        printf("位置%d\n ",sign.c[i]);
    }
            int d;
    
            for(d=0;d<=j;d++)//j为运算符个数,即组数 
            {    
            wether();
            }    
                
        printf("%d\n",e);
    //printf("answer%d\n",);
 for (i=0;i<e;i++)
   {
       printf("answer%d\n",m[i]);
    
}return 0;}

// 子函数
int chk_data(char *num)
{
   
        if (*num > '9' || *num < '0') //只要有非数字,就返回错误
       
        {
            return 0;
        }
  
    return 1;
}
wether()
{int n=0;
for(i=0;i<sign.c[0];i++)
            {    
            
                m[0]=m[0]*10+a[i];
            
            }
    if(n==l)//判断是否是最后一个运算符 
    {
    for(i=sign.c[l]-1;i<k;i++)
        {    
            m[e]=m[e]*10+a[i];//如果是运算符后面所有数为一组 
                
        }
    }
    else//如果不是则从当前位置到下一个运算符之前为一组,然后再判断 
    {
        for(i=sign.c[n];i<sign.c[n+1]-1;i++)
        {
             m[e]=m[e]*10+a[i];
        }
        e++;
        n++;
        wether();    
    }    
}

这样运行不能打印m数组,而且运行速度变慢,应该怎么改

不知道你想做什么,是把输入字符串里的所有整数提取到数组里么?
你的代码好乱,可以重新帮你写一个