自定义函数实现递归如何避免变量未定义


/* 
    程序功能:
            判断输入的字符串是否是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 main(void)
{
    char str[SIZE];   //定义一个大小为SIZE的char型数组
    int i=0,k=0,j=0,l=0;
    int m[SIZE]={0},x;
    int a[SIZE];//存放数字
    int e=1;
   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(i=0;i<sign.c[0];i++)
            {    
            
                m[0]=m[0]*10+a[i];
            
            }    
        i=0;
    
            for(d=0;d<=j;d++)//j代表符号的个数,有几个符号就分成几个组
            {    
            wether(l,k);
            }    
                
        
    //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;
}
void wether(int l,int k)
{int n=0,i;
    if(i==l)//判断是否是最后一个运算符
    {
    for(i=sign.c[l]-1;i<k;i++)
        {    
            m[e]=m[e]*10+a[i];
                
        }
    }
    else
    {
        for(n=sign.c[i];n<sign.c[i+1]-1;n++)
        {
             m[e]=m[e]*10+a[n];
        }
        e++;
        i++;
        wether(l,k);    
    }    
}

如何避免自定义函数时出现变量未定义的情况,我现在要编写一个计算器,我的思路是把运算符和数字放在两个数组中,把每个运算符前后的数字分别分组,比如12+69,12为一组,69一组,存放在数组m中,要在函数wether中使用递归,但是出现的很多变量是在main中,应该怎么解决

  • 要么 作为 入参 ,传到 子函数里;
  • 要么 把这些参数都定义成 全局的变量的,就类似 你的num数组一样

如何避免?
变量要是没定义,你编译都编译不过去,直接就报错了
这还用避免?
IDE给你提供的功能,你要有效的利用起来
不要把多余的精力都耗费在计算机能自动完成的工作上面