我想将函数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;
}