memcpy()复制比预期更多的字节

时间:2015-12-18 03:22:52

标签: c

我正在努力记住' x'从一个数组到另一个数组的字节从数组

中的某些偏移开始
strlen(buf) // source array already contains 144 bytes
// len - 500 bytes 
memcpy(&buf[start], &content[no_of_byes], len)

在执行strlen(buf)的这个操作之后,我得到总计752而不是644.我不明白原因。

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

1 个答案:

答案 0 :(得分:0)

strlen尝试计算字符串的长度,从某种意义上说,它一直在计算缓冲区开头的字节,直到遇到'\ 0',而memcpy只能用于字节。

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

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

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