使用' *'反向抛光表达的论据并不起作用

时间:2016-02-23 13:33:27

标签: c

您好我正在尝试创建一个评估反向波兰表达式的程序。一切顺利,直到我尝试进行乘法。例如,它适用于这个论点: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;

}

1 个答案:

答案 0 :(得分:0)

为了避免使用shell通配符,需要引用该参数。例如。使用&#39; *&#39;而不是*