2016-11-10 5 views
0

Ich versuche, einen einfachen Rechner mit Eingabe vom Terminal zu erstellen. Es wird angenommen, wie dies funktioniert:Speichern Sie einen Char-Zeiger vom Terminal-Eingang in C

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

Es ist sehr einfach Code per se, aber ich habe ein Problem mit dem Terminal-Eingang. Ich habe viel hier bei Stack über Terminal-Eingang lesen, aber ich diesen Fehler beim Kompilieren:

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

Ich weiß nicht, warum. Ich habe viele verschiedene Möglichkeiten ausprobiert, aber es funktioniert nicht. Hier ist der Code, alles was ich wissen will, ist, wie man die 1, + und 3 im obigen Beispiel speichert. Der Code, den ich hier poste, ist nur ein Beispiel, wie ich die "schwierigste" Operation speichern kann, in diesem Fall den Operator +.

+1

'int *' und 'char *' sind nicht kompatibel. –

+1

Wenn Sie einen Ausdruck direkt in der Befehlszeile eingeben möchten, können Sie Probleme auf Unix/Linux-Systemen erwarten ... – CiaPan

+0

Lesen Sie, was _undefined behaviour_ bedeutet. Und vermeide es! Beachten Sie auch die Compiler-Warnungen. Sie sind nicht zum Spaß. – Olaf

Antwort

1

Es ist nicht korrekt, Sie versuchen, ein Int * in ein Zeichen zu konvertieren.

Just do

#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

Sir, ich grüße dich. – Salviati

+0

Ich habe den Atoi-Operator schon einmal ausprobiert, aber ich habe es falsch gemacht. Ich war also nicht an einem sonnigen Strand. Ty wieder. – Salviati

0

argv ist eine Matrix (2d-Array), das heißt argv [2] ist ein Array von Zeichen und Sie müssen etwas tun:

char operator = argv [ 2] [0];

Verwandte Themen