2016-11-10 21 views
0

端末からの入力を使って簡単な電卓を作成しようとしています。C言語の端末入力からcharポインタを格納

./main.c 1 + 3 
1 + 3 = 4 

これは非常に簡単なコードですが、端末の入力に問題があります。 stackexchangeでターミナル入力についてたくさん読んだことがありますが、コンパイル時にこのエラーが出ます:

error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] 

私はなぜそれがわかりません。私はそれを行うにはさまざまな方法を試したが、うまくいかない。ここでコードは、私が知りたいのは、上記の例で1、+、3をどのように格納するかです。私がここに投稿するコードは、最も困難な操作(この場合は+演算子)をどのように格納できるかの例です。

#include<stdio.h> 

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

    char operator; 
    int *operatorp; 
    operatorp = &operator; 

    operatorp = argv[2]; 

    printf("%c\n",operator); 

    return 0; 
} 
+1

'int *'と 'char *'は互換性がありません。 –

+1

コマンドラインで式を直接入力したい場合は、Unix/Linuxシステムで問題が発生する可能性があります。 – CiaPan

+0

_undefined behaviour_の意味を読んでください。それを避けてください!また、コンパイラの警告に注意してください。彼らは楽しいものではありません。 – Olaf

答えて

1

int *をcharに変換しようとしていますが、正しくありません。

char型の演算子=のargv [:

ちょうど

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(int argc, char **argv) 
{ 
    int nbr1 = atoi(argv[1]); 
    char operator = argv[2][0]; 
    int nbr2 = atoi(argv[3]); 

    int result = 0; 

    if (operator == '+') 
    result = nbr1 + nbr2; 
    printf("%d\n", result); 
} 
+0

先生、あなたに挨拶します。 – Salviati

+0

私は以前atoi演算子を試しましたが、間違っていました。だから私は日当たりの良いビーチの外に出ていたわけではありません。もう一度Ty。 – Salviati

0

のargvはARGV [2]文字の配列であり、あなたはこのような何かをしなければならないことを意味行列(2次元配列)、で行います2] [0];

関連する問題