我用strtok标记了一个数组。我想将strtok返回的char指针存储到数组中。

  char exp[] = {"1000 + 1000"};
  char operands[50];
  p = strtok(exp, " ");

现在,我想将p的值(即1000)存储到操作数[i]数组中。我这样尝试过:
memcpy(&operands[i], p, 49);

但是它只复制一个整数。

最佳答案

我猜您实际上并不想将p指向的字符串复制到字符数组operands中。相反,在我看来,您希望operands是指向char的指针的数组,即

char *operands[50];

那你就可以做
operands[i] = p;

(注意:i必须是有效索引,范围为0
但是,以上是C问题的C解决方案。如果您使用C++进行编程,则可能应该使用 std::string std::vector 代替:
std::vector<std::string> operands;

...

operands.push_back(p);

当然,如果您使用C++进行编程,则完全不应使用字符数组和strtok,而应使用C++ standard library中的功能进行标记化。

10-04 14:47