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

int main(int argc, char *argv[]) {

printf("Write in this format: <operand1> <operator> <operand2>\n");
double result, op1, op2;

op1 = atof(argv[1]);
op2 = atof(argv[3]);

if(argv[2][0]=='+')
    result = op1 + op2;
if(argv[2][0]=='-')
    result = op1 - op2;
if(argv[2][0]=='/')
    result = op1 / op2;
if(argv[2][0]=='x')
    result = op1 * op2;

printf("Result: %f", result);

return 0;
}

我正在尝试完成这项工作,但它导致了分段错误。我检查了我的代码,但我找不到任何问题。它应该像一个简单的计算器一样工作。然后我尝试了 argv 或 argc 的手册页,上面写着“没有手动输入...”之类的东西。我的意思是,不应该有一个吗?还是我必须更新一些东西?如果有人能回答他/她认为可以提供帮助的任何内容,我将不胜感激。提前致谢!

4

1 回答 1

1

您的代码在四个条件中存在语法/概念错误。

您正在请求argv[2][0],但它应该是argv[2]

  • argv[2][0]表示:指向char(坏)的指针在数组第三个位置的位置cero
  • argv[2]表示:指向数组中第三个位置的 char 的指针的内容

这就是您收到分段错误错误的原因。

于 2013-03-11T02:36:03.190 回答