-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のマニュアルページを試してみたところ、「...の手動入力はありません」と表示されていました。つまり、あるはずじゃないの?または、何かを更新する必要がありますか?誰かが彼/彼女が助けることができると思う/sに答えるならば、私はそれを感謝します。前もって感謝します!

4

1 に答える 1

1

コードの 4 つの条件に構文/概念エラーがあります。

リクエストしていますが、代わりに次のようにargv[2][0]する必要があります。argv[2]

  • argv[2][0]意味: 配列の 3 番目の位置にある char (bad) へのポインターの位置 cero
  • argv[2]意味: 配列の 3 番目の位置にある char へのポインタの内容

そのため、セグメンテーション違反エラーが発生します。

于 2013-03-11T02:36:03.190 に答える