在C中存储来自终端输入的字符指针

时间:2016-11-10 19:33:31

标签: c terminal

我试图用来自终端的输入创建一个简单的计算器。它应该像这样工作:

./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;
 }

2 个答案:

答案 0 :(得分:1)

这是不正确的,您正在尝试将int *转换为char。

只做

#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);
}

答案 1 :(得分:0)

argv是一个矩阵(2d数组),这意味着argv [2]是一个字符数组,你必须这样做:

char operator = argv [2] [0];