命令行参数:分段错误

时间:2013-03-11 00:07:16

标签: command-line

#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的手册页,它说,“没有手动输入...”这样的东西。我的意思是,是不是应该有一个?或者我必须更新一些东西? 如果有人能回答他/她认为可能有用的任何内容,我会很感激。提前致谢!

1 个答案:

答案 0 :(得分:1)

您的代码在四个条件中有一个syntaxis / concept错误。

您要求argv[2][0],但应该是argv[2]

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

这就是您收到Segmentation fault错误的原因。