gpt4 book ai didi

c - memcpy() 复制的字节数超出预期

转载 作者:行者123 更新时间:2023-11-30 21:09:32 25 4
gpt4 key购买 nike

我正在尝试从数组中的某个偏移量开始将“x”个字节从一个数组memcpy到另一个数组

strlen(buf) // source array already contains 144 bytes
// len - 500 bytes
memcpy(&buf[start], &content[no_of_byes], len)

执行 strlen(buf) 操作后,我得到的总数为 752,而不是 644。我不明白原因。

我什至尝试将内容数组中的 500 字节复制到另一个 buffer2 中,然后将其复制到缓冲区中,结果仍然相同。

最佳答案

strlen 尝试计算字符串的长度,从某种意义上说,它从缓冲区的开头开始不断计数字节,直到遇到“\0”,而 memcpy 仅适用于字节。

我猜你的问题源于不理解这一点。

您可能有一个 752 的字符串,并尝试将其中的一些字节从偏移量复制到缓冲区的开头(您的问题中的此信息不太清楚)。但是,在此过程中,您的 '\0' 可能保留在同一位置,导致 strlen 给出相同的结果。

我的建议是区分字符串和普通缓冲区,并为这两个操作使用适当的系统调用。

关于c - memcpy() 复制的字节数超出预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34348056/

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