如何在C中的二维数组中存储不同类型的运算符?

时间:2014-03-11 18:40:24

标签: c string multidimensional-array

我想将函数y = f(x)作为字符串,并找出其中的运算符,将它们存储在2D数组中,其中每个运算符将被视为分离的字符串。我在某些方面尝试了这一点,但仍在评论中。 这是代码:

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

#define is_variable(ch) (ch=='x'||ch=='t'||ch=='T')
#define is_arith_op(ch) (ch=='+'||ch=='-'||ch=='*'||ch=='/')

char func[10000];
char operators[8000][5];

int main(void)
{
    int i,stk,p,a,b;
    char ch;
    char temp_op[5];
    char c[2];

    gets(func);
    stk = 0;
    for(i=0; i<strlen(func); i++)
    {
        if(func[i]=='+'||func[i]=='-'||func[i]=='*'||func[i]=='/')
        {
            temp_op[0]=func[i];
            temp_op[1]='\0';
            for( ; ; stk++)
                //operators[stk]=temp_op;
            {
                strcpy(operators[stk],temp_op);
                /*for(p=0; temp_op[p]; p++)
                    operators[stk][p]=temp_op[p];
                operators[stk][p]='\0';*/
            }
        }
        else if(func[i]=='s'||func[i]=='c'||func[i]=='t')
        {
            switch(func[i])
            {
            case 's':
            {
                strcpy(temp_op,"s");
                for(a=i+1; a<i+3; a++)
                {
                    c[0]=func[a];
                    c[1]='\0';
                    if((a=i+1&&func[a]=='i')&&(a=i+2&&func[a]=='n'))
                        strcat(temp_op,c);
                }
            }
            case 'c':
            {
                strcpy(temp_op,"c");
                for(a=i+1; a<i+3; a++)
                {
                    c[0]=func[a];
                    c[1]='\0';
                    if((a=i+1&&func[a]=='o')&&(a=i+2&&func[a]=='s'))
                        strcat(temp_op,c);
                }
            }
            case 't':
            {
                strcpy(temp_op,"t");
                for(a=i+1; a<i+3; a++)
                {
                    c[0]=func[a];
                    c[1]='\0';
                    if((a=i+1&&func[a]=='a')&&(a=i+2&&func[a]=='n'))
                        strcat(temp_op,c);
                }
            }
            }

        }
        else if(func[i]=='a')
        {
            strcpy(temp_op,"a");
            for(a=i+1; a<i+4; a++)
            {
                c[0]=func[a];
                c[1]='\0';
                if(((a=i+1&&func[a]=='s')&&(a=i+2&&func[a]=='i')&&(a=i+3&&func[a]=='n'))||((a=i+1&&func[a]=='c')&&(a=i+2&&func[a]=='o')&&(a=i+3&&func[a]=='s'))||((a=i+1&&func[a]=='t')&&(a=i+2&&func[a]=='a')&&(a=i+3&&func[a]=='n')))
                    strcat(temp_op,c);
            }
        }
    }
    for(a=0; operators[a][0]; a++)
    {
        for(b=0; operators[a][b]; b++)
            printf("%c",operators[a][b]);
        printf(" ");
    }

    return 0;
}

0 个答案:

没有答案