【发布时间】:2014-08-12 06:46:38
【问题描述】:
我使用strtok 来标记一个数组。我想将 strtok 返回的 char 指针存储到一个数组中。
char exp[] = {"1000 + 1000"};
char operands[50];
p = strtok(exp, " ");
现在我想将 p 的值(即 1000)存储到操作数 [i] 数组中。我试过这样:
memcpy(&operands[i], p, 49);
但它只复制一个整数。
【问题讨论】:
-
这真的是 C++ 吗?为什么 49 作为 memcpy 的最后一个参数?
-
strcpy(operands, p)? -
std::string是你的朋友。 -
"但它只复制一个整数。" - 这就是
strtok所做的 - 在第一个标记之后将 NUL 字符放入exp[],这样您的memcpy(具有未定义的行为,因为 49 比sizeof exp大得多)复制“1000\0+ 1000 \0" 和大约 40 个其他乱码。听听 Bathsjeba - 如果你使用std::string,你不太可能搞砸,如果你这样做,你有更好的机会得到错误的字符串输出,而不是让你的程序崩溃。 -
我开始用 c 编程,所以我仍然使用 c 函数。 (我看到了 49,但在这种情况下不会有所作为。)
标签: c++ variables pointers strtok