我使用strtok
来标记数组。我想将strtok返回的char指针存储到数组中。
char exp[] = {"1000 + 1000"};
char operands[50];
p = strtok(exp, " ");
现在我想将p(即1000)的值存储到operands [i]数组中。我试过这样的话:
memcpy(&operands[i], p, 49);
但它只复制一个整数。
答案 0 :(得分:3)
我猜你实际上并不想将p
指向的字符串复制到字符数组operands
中。相反,在我看来,你希望operands
成为指针到char
的数组,即
char *operands[50];
然后你可以做
operands[i] = p;
(注意:i
必须是有效索引,范围为0< = i< 50)
但是,以上是C问题的C解决方案。如果您使用C ++进行编程,则应该使用std::string
和std::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;