将指针存储在数组中

时间:2014-08-12 06:46:38

标签: c++ variables pointers strtok

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

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

现在我想将p(即1000)的值存储到operands [i]数组中。我试过这样的话:

memcpy(&operands[i], p, 49);

但它只复制一个整数。

2 个答案:

答案 0 :(得分:3)

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

char *operands[50];

然后你可以做

operands[i] = p;

(注意:i必须是有效索引,范围为0< = i< 50)


但是,以上是C问题的C解决方案。如果您使用C ++进行编程,则应该使用std::stringstd::vector代替:

std::vector<std::string> operands;

...

operands.push_back(p);

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

答案 1 :(得分:0)

char exp[] = {"1000 + 1000"};
char operand[50];
char* p = strtok(exp, " ");
memcpy(&operand[0], p, 5);

运行上面的代码后,在char数组操作数中

前5个被赋值

  

操作数[0] =&#39; 1&#39;操作数[1] =&#39; 0&#39;操作数[2] =&#39; 0&#39;操作数[3] =&#39; 0&#39;   operand [4] = 0 // char数组的结束字符

其他人没有分配价值&#39;?&#39;

  

操作数[i] =&#39;?&#39;