首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >argv和polish记数计算器

argv和polish记数计算器
EN

Stack Overflow用户
提问于 2011-03-31 21:31:53
回答 3查看 1.3K关注 0票数 5

我正在尝试解决一个使用argc和argv参数的K&R练习(5.10)。它应该是一个波兰符号计算器,它使用命令行参数作为它的‘input.Well’,程序对于'+‘和'-’运算符运行良好,但是我得到了'*‘的错误。我发现它与’*‘符号有关,因为如果我用其他东西替换它,程序works.Any的想法?谢谢。

注意:我没有包括stack_in、stack_out和print_stack.I认为它们很好的函数。

代码语言:javascript
复制
#include <stdio.h>
#define MAXST 10
#define NUMBER '1'

void stack_in(int n);
int stack_out(void);
void print_stack(void);

int main(int argc,char **argv)
{
  char c,k;

while(--argc>0 && ++argv)
    while(c=*(*argv)++){
        if(c>='0' && c<='9')
            k=NUMBER;
        else
            k=c;
        switch (k){
            int g1,g2;

            case NUMBER:stack_in(c-'0');
                    break;
            case '+':g1=stack_out();
                 g2=stack_out();
                 stack_in(g1+g2);
                 break;
            case '-':g1=stack_out();
                 g2=stack_out();
                 stack_in(g2-g1);
                 break;
            case '*':g1=stack_out();
                 g2=stack_out();
                 stack_in(g1*g2);
                 break;
            default:printf("error on switch \n");
                break;
        }
}

print_stack();

return 0;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-31 21:34:01

我想我已经做了非常多的练习!

无论如何,很可能是命令行上的*操作符变成了“目录中的所有文件”,这将不起作用。所以当你调用程序时,你需要引用它:

代码语言:javascript
复制
# rpmprog 2 3 '*'

或者,您可以在大多数shell中使用反引号:

代码语言:javascript
复制
# rpmprog 2 3 \*
票数 6
EN

Stack Overflow用户

发布于 2011-03-31 21:35:26

在Linux/UNIX中,如果您不希望shell对其进行扩展,则应该将*用单引号'*'括起来。

票数 3
EN

Stack Overflow用户

发布于 2011-03-31 21:34:48

您的操作系统在命令行中使用"*“作为通配符;您对程序所做的任何更改都不会影响这一点。您可能能够在命令行上“转义”符号--即,

代码语言:javascript
复制
calculator 2 2 \*
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5500673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档