我正在尝试执行一个简单的 memcpy,如下所示。
char *token[32];
char *temp_store[4];
for (i = 0 ; i < 4; i++)
{
memcpy(token[4+i],temp_store[i],strlen(temp_store[i]));
}
token 数组中有以下值。
temp_store[0] = "5";
temp_store[1] = "6";
temp_store[2] = "7";
temp_store[3] = "8";
我希望将这 4 个值 "5", "6", "7", "8"
复制到 token[4],token[5],token[6 ] 和 token[7]
分别。
但是由于某种原因我没有在 token[] 中获取这些值。我不明白为什么会这样。
最佳答案
首先,如果您想使用 memcpy 函数复制 C 字符串,则必须复制 strlen() + 1 字节以包含零终止符。或者您必须自己将终止零添加到目标数组中。如果没有终止零,它就不是字符串。
其次,复制以零结尾的字符串实际上是 strcpy
函数的作用。您为什么选择使用 memcpy
来代替?
第三,如果你真的想复制源字符串,你是否记得在执行复制之前分配目标内存?向我们展示您是如何分配的。到目前为止您发布的代码没有分配该内存,这意味着您的 memcpy
调用将数据复制到“无处可去”,从而导致未定义的行为,通常会导致崩溃。
第四,您确定要复制这些字符串,而不是简单地使 token[]
元素指向相同的内存位置吗?后者可以通过简单的实现
token[4+i] = temp_store[i];
此方法是否适用于您的情况取决于您想要做什么。
关于c - 简单的 memcpy 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964224/