gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:56:52 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com