您好我正在尝试创建一个评估反向波兰表达式的程序。一切顺利,直到我尝试进行乘法。例如,它适用于这个论点:Program_name 2 3 + or 2 3 - 4 /
但是如果尝试3 4 *
不再有效。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char getcharacter(const char *c){
return c[0];
}
int main(int argc, char *argv[])
{
int a[10],i=0;
char c;
if(argc>3)
{
while(--argc>0){
c=getcharacter(*++argv);
printf("%c ",c);// for debug
if(c>47&&c<58)
{
a[i]=c-'0';
i++;
}
else if(c=='-')
{
a[i-2]=a[i-2]-a[i-1];
a[i-1]=0;
i--;
}
else if(c=='+')
{
a[i-2]=a[i-2]+a[i-1];
a[i-1]=0;
i--;
}
else if(c=='*')
{
a[i-2]=a[i-2]*a[i-1];
a[i-1]=0;
i--;
}
else if(c=='/')
{
if(a[i-2]==0)
printf("Error\n");
else
{
a[i-2]=a[i-2]/a[i-1];
a[i-1]=0;
i--;
}
}
else printf("U have entered something wrong.");
}
}
else
{
printf("Too few arguments");
}
printf("Rezultat=%d\n",a[0]);
return 0;
}
答案 0 :(得分:0)
为了避免使用shell通配符,需要引用该参数。例如。使用&#39; *&#39;而不是*