c - 简单的 memcpy 似乎不起作用

标签 c pointers memory memcpy

我正在尝试执行一个简单的 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/

相关文章:

c - 使用 MoveToEx 和 LineTo 为窗口制作边框

c - typedefs 与 Doxygen 的同行文档

pointers - 在 Go 中使用 unsafe.Pointer 引起 panic

javascript - "JavaScript heap out of memory"传输大文件时

c - 为什么 realloc 创建两个不同的指针?

C - 从特定的大范围中获取素数

c++ - Vector2 运算符改进

c - 输入文件时出现 SegFault

C 编程 - Malloc 结构和未定义数组

c++ - objective-c 中的功能指针